GraphQL 是一种新的 API 设计语言,它可以让前端开发者自由地获取他们需要的数据。Fastify 是一个快速且高效的 Node.js web 框架。在本文中,我们将介绍如何在 Fastify 应用程序中部署 GraphQL,并探讨如何使用这个强大的语言来构建更好的 API。
安装
首先,我们需要安装必要的包来启用 Fastify GraphQL。我们将使用 fastify
和 fastify-gql
包。
npm install fastify fastify-gql
使用
现在我们已经安装了必要的包,我们可以开始编写代码。首先,我们需要引入 fastify
和 fastify-gql
包,并创建一个 Fastify 实例。
const fastify = require('fastify')({ logger: true }) const gql = require('fastify-gql')
接下来,我们将创建一个 GraphQL schema。这个 schema 定义了我们的 API 应该如何工作,并提供了一组 GraphQL 查询和变更。
const schema = ` type Query { hello: String } schema { query: Query } `
现在,我们必须为我们的 Fastify 实例启用 GraphQL 插件,并将我们的 schema 添加到它的选项中。
fastify.register(gql, { schema, graphiql: true })
最后,我们需要启动我们的 Fastify 实例以便它开始处理 HTTP 请求。
fastify.listen(3000, (err, addr) => { if (err) { fastify.log.error(err) process.exit(1) } fastify.log.info(`server listening on ${addr}`) })
查询
现在,我们的 Fastify 应用程序已经启用了 GraphQL,我们可以使用以下查询来测试它:
{ hello }
这个查询将返回一个包含“hello”的字符串。我们可以通过将 hello
解析为我们想要的任何类型来扩展它。
变更
GraphQL 也允许我们执行变换。我们可以编写一个包含变更的 schema。
const schema = ` type Query { posts: [Post!]! } type Post { id: ID! title: String! content: String! } input PostInput { title: String! content: String! } type Mutation { createPost(data: PostInput!): Post! } schema { query: Query mutation: Mutation } `
上面的 schema 允许我们创建帖子。我们还会定义一个输入 PostInput
类型,它将带有 title
和 content
字段。我们的 createPost
变换将使用 data
输入参数创建新的 Post 对象,并将其添加到内存中的帖子列表中。
总结
在这篇文章中,我们介绍了如何在 Fastify 应用程序中部署 GraphQL。我们从安装必要的包和创建 GraphQL schema 开始,然后使用 Fastify GraphQL 插件添加到我们的 Fastify 实例。我们还展示了如何使用查询和变诱模式来测试和修改我们的 API。希望这篇文章对初学者有所帮助,并为熟悉 GraphQL 的人提供了一些新的洞见。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a09cacadd4f0e0ff8df708