REST API 是构建现代应用程序的重要组件之一。然而,REST 也有一些限制,比如客户端必须发出多个请求才能获取完整的数据,这可能会导致性能问题。
GraphQL 是一种用于 API 的查询语言,它可以解决 REST API 的一些限制。在本文中,我们将学习如何使用 GraphQL 将现有的 REST API 封装起来,并提供更好的性能和可靠性。
GraphQL 是什么?
GraphQL 是一种由 Facebook 开发的查询语言。与 REST 不同,GraphQL 允许客户端定义自己需要的数据结构,从而减少了不必要的网络请求。GraphQL 还具有类型系统、强大的查询功能和实时数据传输等特点。
把 REST API 包装成 GraphQL
将现有的 REST API 封装为 GraphQL 可以使用任何支持 GraphQL 的服务器框架。在本例中,我们将使用 Node.js 和 Express。
步骤 1:安装依赖项
首先,我们需要安装 express-graphql
和 graphql
两个包:
npm install express-graphql graphql
步骤 2:创建 schema
在 GraphQL 中,schema 定义了 API 中可用的类型和操作。我们需要根据我们的 REST API 创建一个 schema。以下是一个简单的示例:
type User { id: Int name: String } type Query { user(id: Int!): User }
在这个 schema 中,我们定义了一个 User
类型,它包含 id
和 name
字段。我们还定义了一个查询操作 user
,它接受一个 id
参数并返回一个 User
对象。
步骤 3:创建 resolver
resolver 是实现 GraphQL 操作的函数。在本例中,我们需要编写一个 resolver 来调用我们现有的 REST API。
-- -------------------- ---- ------- ----- ----- - ---------------------- ----- ------- - -------------------------- ----- --------- - - ------ - ----- ------------ - -- -- - ----- -------- - ----- -------------------------------- ----- ---- - ----- ---------------- ------ ----- -- -- --展开代码
在这个 resolver 中,我们使用 node-fetch
包来调用我们的 REST API,并将响应转换为 JSON 格式。我们将此数据返回给客户端作为 GraphQL 响应。
步骤 4:创建 Express 应用程序
最后,我们需要创建一个 Express 应用程序来将 schema 和 resolver 结合起来。这里是一个简单的示例:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- - -------------------- - - --------------------------------- ----- -------- - - ---- ---- - --- --- ----- ------ - ---- ----- - -------- ------ ---- - -- ----- --------- - - ------ - ----- ------------ - -- -- - ----- -------- - ----- -------------------------------- ----- ---- - ----- ---------------- ------ ----- -- -- -- ----- ------ - ---------------------- --------- ---------- --- ----- --- - ---------- -------- ----------- ------------- ------- --------- ----- -- -- ---------------- -- -- ------------------- ------- -- ---- --------展开代码
在这个应用程序中,我们使用 makeExecutableSchema
函数将我们的 schema 和 resolver 结合起来,并创建一个 GraphQL API。我们还使用 graphqlHTTP
中间件来处理请求和响应。
步骤 5:测试 API
现在我们已经完成了 GraphQL API 的创建,可以使用 GraphiQL 工具来测试它。只需在浏览器中打开 http://localhost:3000/graphql
并开始编写查询即可。
以下是一个简单的示例查询:
{ user(id: > 来源:[JavaScript中文网](https://www.javascriptcn.com/post/63432) ,转载请注明来源 [https://www.javascriptcn.com/post/63432](https://www.javascriptcn.com/post/63432)