首頁  >  文章  >  web前端  >  graphql nodejs 查詢

graphql nodejs 查詢

WBOY
WBOY原創
2023-05-25 10:13:37559瀏覽

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

在我們在繼續之前,讓我們詳細了解這些依賴項。

  • Express:網路應用程式框架,它可以幫助我們建立基於Node.js的網路應用程式。
  • GraphQL:查詢語言,它可以用於API中請求資料。
  • 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn