GraphQL 是一种查询语言,可以作为 REST API 的替代品。它允许客户端指定需要获取的数据,从而减少不必要的通信和数据传输。在前端领域,GraphQL 的重要性日益增长。本文将介绍如何在 Node.js 中实现GraphQL服务。
安装依赖
首先,需要安装 graphql
和 express-graphql
两个依赖。graphql
是 GraphQL 的核心库,express-graphql
提供了将 GraphQL 服务挂在 Express 应用上的中间件。可以通过以下命令进行安装。
npm install graphql express-graphql
创建 GraphQL Schema
在创建 GraphQL 服务之前,需要定义数据模型和查询结构。这可以通过 GraphQL Schema 来完成。Schema 是一个对数据模型进行描述的结构体,定义了数据模型中的类型、字段、查询、变异和订阅等内容。
下面是一个示例 Schema 的定义。
-- -------------------- ---- ------- ----- - ------------------ -------------- ------------ -------------- - - ------------------- -- -- ---- ---- ----- -------- - --- ------------------- ----- ------- ------- -- -- -- --- - ----- ------------- -- ------ - ----- ------------- -- ------- - ----- ------------- -- --- --- -- ------ ----- --------- - --- ------------------- ----- ---------------- ------- - ----- - ----- --------- ----- - --- - ----- ------------- - -- --------------- ----- - -- --------------- -- -- ------ - ----- --- ---------------------- --------------- ----- - -- --------------- -- -- -- --- -- ---- --- ----- ----- --------------- - --- ------------------- ----- -------------- ------- -- -- -- --- - ----- ------------- -- ------ - ----- ------------- -- ------- - ----- ------------- -- --- --- -- ------ ----- -------- - --- ------------------- ----- ----------- ------- - -------- - ----- --------- ----- - ------ - ----- ------------- -- ------- - ----- ------------- -- -- --------------- ----- - -- ---------------- -- -- -- --- -- -- ------- ------ -------------- - --- --------------- ------ ---------- --------- --------- ---
上述代码定义了 Book
数据类型,并定义了查询类型和变异类型。外部 API 的查询类型可以根据情况进行定义。注意其中的 resolve
函数,它是用于返回数据的函数。
创建 Express 应用和 GraphQL 服务
接下来,需要创建一个 Express 应用,并将 GraphQL 服务挂在上面。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- ------ - -------------------- ----- --- - ---------- -- - ------- ------ -------- ----------- ------------- ------- --------- ----- -- -- -------- -- -- -- ---------------- -- -- - ---------------------- -- ---- ------- ---
graphqlHTTP
是 Express 应用中的 GraphQL 中间件,它需要传入 Schema 和其他选项。通过开启 graphiql
选项,可以启用 GraphiQL 工具,这是一个交互式的 GraphQL 开发环境。最后,启动 Express 应用即可。
查询数据
现在可以使用 GraphQL 来查询数据了。可以通过浏览器的地址栏或者 Postman 等工具来发起 HTTP 请求。
例如,以下是查询一本书的请求。
GET http://localhost:3000/graphql?query={book(id:"1"){id,title,author}}
以下是查询多本书的请求。
GET http://localhost:3000/graphql?query={books{id,title,author}}
以下是添加一本书的请求。
POST http://localhost:3000/graphql { "query": "mutation{addBook(title:\"JavaScript 101\",author:\"John Smith\"){id,title,author}}" }
其中的查询语句可以在 GraphiQL 工具中编写和测试。
结论
本文介绍了如何在 Node.js 中实现 GraphQL 服务。通过定义 Schema 和创建 Express 应用,并使用 GraphQL 中间件来挂载服务,就可以通过查询、变异和订阅等方式来获取数据。GraphQL 提供了一种灵活、强大和高效的数据查询方式,可以让前端开发更加快捷和便利。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6774976a6d66e0f9aaee73f4