GraphQL是一種查詢語言,它可以用於API中請求資料。它是一個強類型的查詢語言,可以幫助我們定義API中可以請求的欄位以及每個欄位的類型。 GraphQL最初是由Facebook開發的,後來被開源並廣泛用於建立Web應用程式。
Node.js是一個流行的JavaScript執行環境,它允許我們使用JavaScript編寫伺服器端應用程式。 Node.js的高效能和強大的生態系統使其成為建立高效能API的理想選擇。 Node.js中有許多GraphQL函式庫,讓使用GraphQL的API變得非常簡單、有效率。
本文將介紹如何在Node.js中使用GraphQL查詢資料。我們將使用一個基於Node.js和Express框架的簡單應用程序,使用GraphQL查詢資料。
第一步:建立一個簡單的Express應用程式並配置GraphQL
首先,我們需要建立一個Node.js應用程式。讓我們使用Express框架來建立我們的應用程式。在建立應用程式之前,請確保您的系統上已安裝了Node.js和npm。我們可以透過在終端機中輸入以下命令來檢查是否安裝了Node.js:
node -v
如果您已成功安裝了Node.js,則應看到安裝的版本號。
接下來,在終端機中建立新的專案目錄並初始化npm:
mkdir nodejs-graphql-demo cd nodejs-graphql-demo npm init -y
現在,讓我們使用以下命令安裝必要的依賴項:
npm install express graphql express-graphql
在我們在繼續之前,讓我們詳細了解這些依賴項。
接下來,讓我們在專案主目錄中建立一個新檔案server.js,並加入以下內容:
const express = require('express'); const { graphqlHTTP } = require('express-graphql'); const { buildSchema } = require('graphql'); const app = express(); const schema = buildSchema(` type Query { message: String } `); const root = { message: () => 'Hello World!' }; app.use('/graphql', graphqlHTTP({ schema: schema, rootValue: root, graphiql: true })); const PORT = process.env.PORT || 5000; app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
在上面的程式碼中,我們先匯入Express、 graphqlHTTP和buildSchema模組。接下來,我們建立一個Express實例,並使用buildSchema函數定義了一個簡單的查詢模式。我們的查詢模式只包含一個名為message的查詢字段,並且傳回一個字串。
接下來,我們定義了一個名為root的JavaScript對象,它包含了一個返回「Hello World!」的message函數。在GraphQL中,該物件稱為root解析器物件。我們定義了一個用於GraphQL的中間件,並使用我們剛剛建立的schema和root解析器物件。此中間件將在路由為/graphql的路徑上提供GraphQL服務,而graphiql選項設定為true將啟用GraphiQL介面。
最後,我們使用Express實例的listen方法啟動應用程序,並偵聽5000連接埠。
第二步:測試GraphQL查詢
我們已經成功設定了GraphQL中間件,現在我們可以測試我們的查詢。讓我們使用Postman來做這件事。首先,我們需要安裝和啟動Postman。透過在終端機中輸入以下命令來啟動Postman:
postman
現在,讓我們建立一個新的POST請求並設定URL為http://localhost:5000/graphql。在請求正文中,將以下查詢新增至GraphQL查詢編輯器:
query { message }
現在,我們可以發送請求並查看回應。回應應包含以下內容:
{ "data": { "message": "Hello World!" } }
如您所見,我們成功從GraphQL查詢中取得了回應。讓我們使用更多的查詢欄位和類型來增強我們的查詢。
第三步:新增更多的查詢欄位和類型
現在,我們來擴展我們的查詢模式,使其包含更多欄位和類型。讓我們看一下以下範例:
const schema = buildSchema(` type Query { message: String number: Int person: Person } type Person { name: String age: Int address: Address } type Address { street: String city: String state: String country: String } `); const root = { message: () => 'Hello World!', number: () => 42, person: () => ({ name: 'John Doe', age: 30, address: { street: '123 Main St', city: 'Anytown', state: 'CA', country: 'USA' } }) };
在上面的程式碼中,我們新增了一個名為number的整數查詢字段,以及一個名為person的查詢字段,它傳回一個Person類型的物件。我們也定義了Person和Address類型。
在root解析器物件中,我們定義了與新欄位和類型相對應的函數。 message和number欄位各自傳回字串和整數,而person欄位傳回一個Person對象,其欄位和值由我們定義。
現在,讓我們測試新的查詢。我們可以使用以下查詢:
query { message number person { name age address { street city state country } } }
回應應包含以下內容:
{ "data": { "message": "Hello World!", "number": 42, "person": { "name": "John Doe", "age": 30, "address": { "street": "123 Main St", "city": "Anytown", "state": "CA", "country": "USA" } } } }
如您所見,我們已經成功地查詢了新的欄位和類型。您可以根據需要新增更多欄位和類型,以便在API中傳回更多有用的資料。
結論
在本文中,我們學習如何在Node.js中使用GraphQL查詢資料。我們創建了一個基於Express框架的簡單應用程序,並使用Express中間件和GraphQL模組來以程式方式查詢資料。我們還添加了更多的查詢欄位和類型,以增強我們的查詢。 GraphQL是一個非常強大且有用的工具,可以幫助我們建立高效且可擴展的API。
以上是graphql nodejs 查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!