<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
瞭解事物幕後的運作方式往往有好處,但並非總是如此。 因為不必使事情過於複雜。而視覺化圖形介面在處理這麼一個場景中,是首當其衝的。
在本文中,我將帶你瞭解如何使用 GraphiQL 來輔助 GraphQL 的開發。
在我們談論 GraphiQL
之前,讓我們先談談 GraphQL
。
GraphQL 是一種用於應用程式程式設計介面 (API) 的開源資料查詢和操作語言,也是一種使用現有資料完成查詢的執行時。
GraphQL 於 2012 年由 Facebook 內部開發,然後於 2015 年向公眾釋出。
與 REST方法相比,開發人員更喜歡它,但本篇文章我們不會關注關於 RESTful 方法和 GraphQL 的優缺點的比較。
現在,如果你熟悉 RESTful API,你可能會知道 Postman 和 Insomnia 之類的工具,因為它們不僅可以幫助我們快速視覺化 API 開發,還可以幫助我們更快地完成工作。
同樣,你可以將 GraphiQL 視為 Postman 或 Insomnia。 因為 GraphiQL 是 GraphQL 整合式開發環境 (IDE)。
它這是一個強大的工具,可以幫助你直觀地構建 GraphQL 查詢的工具。
在我們開始學習之前,希望你具備以下知識:
我們正在構建一個 express.js 伺服器,它是一個 Node.js 函數並將其放入變數的地方;應用程式。
現在,我們將建立一個資料夾來存放我們的專案檔案。
進入新建立或所需的資料夾後,在命令列介面 (CLI) 上執行它:
npm init -y
這將在你所在的資料夾中建立一個 package.json
檔案。
接下來要做的是安裝我們專案所需的依賴包。 執行:
npm install graphql express-graphql express。
你應該將 "dev": "node app.js"
新增到 package.json 檔案中的 script
物件中:
script: { "dev": "node app.js" }
安裝完成後,你的 package.json
檔案應如下所示:
因為 express.js 不知道 如何與 graphql 進行通訊,所以我們安裝了 express-graphql
依賴包。
接著,在你的資料夾中,建立一個名為 app.js
的檔案並填入以下程式碼:
//app.js const express = require('express'); const { graphqlHTTP } = require('express-graphql'); const schema = require('./schema/schema'); const app = express(); // bind express with graphql app.use('/graphql', graphqlHTTP({ schema, graphiql: true })); app.listen(2020, () => { console.log('now listening at port 2020'); });
這段程式碼是我們工作的切入點。
在第 4 行,我們引入了一個自定義路徑 schema.js
。後面我會提到它。
然後第 5 行是我們範例化 express
函數並將其賦值給 app
這個常數。
從第 7 行到第 10 行,我們首先呼叫 app.use()
,它允許我們在 express.js 中註冊中介軟體。
每當我們點選路由 /graphql
時,它始終會呼叫 graphqlHTTP()
,並新增物件。
我們希望能夠以圖形方式看到正在發生的事情,因為我們給 graphiql 一個“true”值。
現在,在專案的資料夾中建立一個資料夾。然後在剛剛建立的資料夾中,建立一個名為 “schema.js
” 的檔案。
將以下程式碼填入到 schema.js
檔案中:
// schema.js const graphql = require("graphql"); const _ = require("lodash"); const { countries } = require("./country"); const { GraphQLObjectType, GraphQLString, GraphQLSchema, GraphQLID } = graphql; const CountryType = new GraphQLObjectType({ name: "Country", fields: () => ({ id: { type: GraphQLID }, name: { type: GraphQLString }, capital: { type: GraphQLString }, }), }); const RootQuery = new GraphQLObjectType({ name: "RootQueryType", fields: { country: { type: CountryType, args: { id: { type: GraphQLID } }, resolve(parent, args) { return _.find(countries, { id: args.id }); }, }, }, }); module.exports = new GraphQLSchema({ query: RootQuery, });
程式碼中我們使用到了 lodash
這個包,所以請在命令列中執行:npm intsall loadash
以安裝它。
在 schema
資料夾中,我們需要建立一個名為 country.js
的檔案並填入以下程式碼:
const countries = [ { name: 'Portugal', capital: 'Libson', id: '1' }, { name: 'Canada', capital: 'Ontario', id: '2' }, { name: 'Nigeria', capital: 'Abuja', id: '3' }, ]; module.exports = {countries};
最後,你的專案資料夾應如下所示:
現在,回到 schema/schema.js
。
從第 2 行到第 5 行,我們匯入 schema/country.js
的內容,該內容的結構與 GraphQL 伺服器所需的內容結構是保持一致的。
從第 6 行到第 13 行,變數 CountryType
由來自 graphql 的 GraphQLObjectType()
方法範例化。 其中有兩個屬性:name 和 fields
。
name
的值為 “Country
”,其中作為屬性的欄位也是一種隱式返回物件(id; name capital
)的方法。
從第 14 行到第 25 行,我們有一個新的 GraphQLObjectType()
範例,它被放在變數 RootQuery
中。 我們看到我們正在使用 Loadash 通過 id 返回 countries
。
如果一切都正確完成,你應該能夠在 GraphiQL 介面中執行你的 GraphQL。
執行 npm run dev
:
然後,在你的瀏覽器中,轉到 http://localhost:2020/graphql,你應該會看到:
是的,現在你可以使用 GraphiQL 介面測試你的 API。 你可以嘗試通過在瀏覽器中貼上以下內容來獲取我們 country.js 中 id 為 1 的 name 和 capital:
{ country(id: 1) { name capital } }
完成此操作後,點選“Play”圖示,你應該會在螢幕的另一側看到如下響應:
現在,我們已經完成了關於如何使用 GraghQL 的預設視覺化工具 GraphiQL 視覺化你的 GraphQL 模式的教學。
我們也已經看到 GraphQL 提供了一種很好的方法來查詢 API 中的某些內容。
以上就是JS前端視覺化GraphQL使用詳解的詳細內容,更多關於JS前端視覺化GraphQL的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45