简介
GraphQL 是 Facebook 出品的一种查询语言和服务端执行语言的组合,用于 API 的实现。graphql-server-express 是一个用于将 GraphQL 服务绑定到 Express 服务器上的 npm 包。
本文将为您详细介绍如何使用 graphql-server-express,并提供示例代码。
安装
您可以通过以下命令安装 graphql-server-express:
npm install graphql-server-express
配置
在你的 Express app 中,你需要创造一个 GraphQL schema 并且创建一个委托的Express 中间件 (middleware) 来处理 GraphQL 请求。
创建 Schema
GraphQL 是一个基于 schema 的查询语言,所以我们首先需要创建一个 schema。 schema 表示了你 API 上可用的 type、query 以及 mutation。
schema 必须定义一个 query 和 mutation 类型,即最顶层的 type。
下面是一个简单的 schema 示例:
const { buildSchema } = require('graphql'); const schema = buildSchema(` type Query { hello: String } `);
这个 schema 定义了一个 query 类型,其中 hello 字段返回字符串类型的“hello”。
创建 Express 中间件 (middleware)
graphql-server-express 提供了 express-graphql 中间件。你需要提供一个 schema,并且中间件处理将用此 schema 来解析查询。此中间件将解析 Query/Mutation 中定义的请求并返回 JSON 结构。下面是一个简单的示例:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- - -------------- - - ---------------------------------- ----- --- - ---------- --------------------------- ------------------- ---------------- ------ ----展开代码
GraphQL 请求需要被 POST 提交到 /graphql
路径上。可以使用 curl 命令来测试请求 curl -X POST http://localhost:3000/graphql -d '{"query": "{ hello }"}' -H 'Content-Type: application/json'
。这个请求将执行上面的 Query,服务器将返回 JSON 形式的结果。
示例代码
下面是一个完整的示例代码,包括了 schema 的定义和关联 api 的 express 配置:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ------------- --- - - --------------------------------- ----- --- - ---------- -- ------ ---- ------ ----- ------- ------ -------- ----- -------- - ----- ---- ----- - ------ ------ - --- -- ------- -------- --------- --- ---- ------ ------ ----- --------- - - ------ - ------ -- -- ------- - -- ----- ------ - --- -------------- --------- --------- --- ------------------------ --- --- ------------ ----- ---- -- -- -- -------------------- ------ ----- -- -------------------------------------------- --展开代码
运行节点服务器 npm run dev 这将启动应用程序并在控制台输出以下信息:
GraphQL Server ready at http://localhost:4000/graphql
结论
在 Express 应用程序中为 GraphQL 查询添加支持非常简单,graphql-server-express 提供了一个用于将 GraphQL 服务绑定到 Express 服务器的中间件,你只需要提供 schema 和 middleware。
希望这篇文章对你和学习和使用 graphql-server-express 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedba99b5cbfe1ea06118f5