Fastify 是一种基于 Node.js 的快速、低开销的 Web 框架。GraphQL 是一种现代化的 API 查询语言。本文将介绍如何在 Fastify 应用中使用 GraphQL Apollo。
安装
首先,我们需要安装依赖:
npm install fastify-graphql apollo-server-fastify graphql -S
其中,fastify-graphql
是 Fastify 的 GraphQL 插件,apollo-server-fastify
是把 Apollo Server 整合到 Fastify 中的插件,graphql
则是 GraphQL 的核心库。
创建 GraphQL 模式
接下来,我们需要编写 GraphQL 模式。在 Fastify 应用中,我们可以把它放到单独的文件中,比如 src/schema.js
:
// javascriptcn.com 代码示例 const { gql } = require('apollo-server-fastify') const typeDefs = gql` type Query { hello: String } ` module.exports = typeDefs
这里定义了一个名为 Query
的对象类型,它包含了一个名为 hello
的字段,该字段返回一个字符串。
创建 GraphQL 解析器
现在,我们需要编写 GraphQL 解析器,它将决定如何响应查询。在 Fastify 应用中,我们可以把它放到单独的文件中,比如 src/resolvers.js
:
const resolvers = { Query: { hello: () => 'Hello, world!' } } module.exports = resolvers
这里定义了一个名为 Query
的对象类型解析器,它包含了一个名为 hello
的字段解析器,该字段返回一个字符串。
集成到 Fastify
现在,我们已经准备好了 GraphQL 模式和解析器,我们可以把它们集成到 Fastify 中。在 Fastify 应用中,我们可以把它们放到单独的文件中,比如 src/app.js
:
// javascriptcn.com 代码示例 const Fastify = require('fastify') const { ApolloServer } = require('apollo-server-fastify') const typeDefs = require('./schema') const resolvers = require('./resolvers') const app = Fastify() const server = new ApolloServer({ typeDefs, resolvers }) app.register(server.createHandler()) app.listen(3000, err => { if (err) { console.error(err) process.exit(1) } console.log(`Server is listening on port 3000`) })
这里创建了一个 Fastify 应用,并创建了一个 Apollo Server 实例。然后,我们在 Fastify 应用中注册 Apollo Server 处理程序,使得它可以处理 GraphQL 查询。最后,我们启动 Fastify 应用并监听端口。
查询 GraphQL API
现在,我们已经准备好了 GraphQL API,我们可以使用任何 GraphQL 客户端来查询它。这里提供一个简单的示例,使用 graphql-request 库:
// javascriptcn.com 代码示例 const { request } = require('graphql-request') const endpoint = 'http://localhost:3000/graphql' const query = ` query { hello } ` request(endpoint, query) .then(data => { console.log(data) }) .catch(error => { console.error(error) })
这里创建了一个 GraphQL 请求,用于查询 hello
字段。然后,我们使用 graphql-request
库发送 GraphQL 请求并打印响应结果。
总结
本文介绍了如何在 Fastify 应用中使用 GraphQL Apollo。我们首先安装了依赖,然后编写了 GraphQL 模式和解析器。最后,我们将它们集成到 Fastify 应用中,并使用 GraphQL 客户端查询 API。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6547bfd07d4982a6eb217229