點燈坊

失くすものさえない今が強くなるチャンスよ

如何在 Node 呼叫 GraphQL ?

Sam Xiao's Avatar 2020-03-14

雖然 GraphQL 主要是給前端使用,但有時在 Microservice 架構下,後端也會需要呼叫其他 Service 所提供 GraphQL,此時可在 Node 使用 graphql-request

Version

macOS Catalina 10.15.3
WebStorm 2019.3.3
Node 12.4.0
Graphql-request 1.8.2

Install Package

$ yarn add graphql-request

使用 Yarn 安裝 graphql-request

GraphQL Request

import { GraphQLClient } from "graphql-request"

let myGql = new GraphQLClient('http://localhost:4000/')

let query = `
  query {
    books {
      title
      price
      quantity
    }
  }
`

myGql
  .request(query)
  .then(console.log)

第 1 行

import { GraphQLClient } from "graphql-request"

graphql-request import 進 GraphqlClient()

第 3 行

let myGql = new GraphQLClient('http://localhost:4000/')

GraphQLClient 傳進 GraphQL API 的 url,使其建立 myGql() object。

第 5 行

let query = `
  query {
    books {
      title
      price
      quantity
    }
  }
`

從 GraphQL Playground 貼上 GraphQL query。

15 行

myGql
  .request(query)
  .then(console.log)

將 GraphQL query 傳入 myGql.request(),由於其回傳為 promise,因此可繼續使用 ECMAScript 各種應付 promise 技巧繼續處理。

request000

Conclusion

  • 事實上前端也能使用 graphql-request,由於其回傳 promise,因此可自行將 promise 以 side effect 形式寫入 Vue 的 data 使其 data binding

Reference

John Au-Yeung, How to Use GraphQL API in Node.js Apps