在 Fastify 应用程序中部署 GraphQL

GraphQL 是一种新的 API 设计语言,它可以让前端开发者自由地获取他们需要的数据。Fastify 是一个快速且高效的 Node.js web 框架。在本文中,我们将介绍如何在 Fastify 应用程序中部署 GraphQL,并探讨如何使用这个强大的语言来构建更好的 API。

安装

首先,我们需要安装必要的包来启用 Fastify GraphQL。我们将使用 fastifyfastify-gql 包。

使用

现在我们已经安装了必要的包,我们可以开始编写代码。首先,我们需要引入 fastifyfastify-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 类型,它将带有 titlecontent 字段。我们的 createPost 变换将使用 data 输入参数创建新的 Post 对象,并将其添加到内存中的帖子列表中。

总结

在这篇文章中,我们介绍了如何在 Fastify 应用程序中部署 GraphQL。我们从安装必要的包和创建 GraphQL schema 开始,然后使用 Fastify GraphQL 插件添加到我们的 Fastify 实例。我们还展示了如何使用查询和变诱模式来测试和修改我们的 API。希望这篇文章对初学者有所帮助,并为熟悉 GraphQL 的人提供了一些新的洞见。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a09cacadd4f0e0ff8df708


纠错反馈