引言
GraphQL 是一种用于 API 的查询语言,它通过定义数据的形式和关系来描述 API 的能力。它可以被用于任何语言或平台,并且是一种强类型的查询语言。Hapi 是一个 Node.js 的 Web 应用程序框架,它提供了一个可扩展的插件体系结构,可以用于构建各种 Web 应用程序。
在本文中,我们将探讨如何在 Hapi 框架中集成 GraphQL,并使用它来构建一个基本的应用程序。我们将介绍如何安装和配置 GraphQL 插件,如何定义 GraphQL Schema,并使用它来查询和修改数据。
安装和配置插件
首先,我们需要安装 hapi-graphql
插件,它是一个用于在 Hapi 应用程序中使用 GraphQL 的插件。我们可以使用 npm 来安装它:
npm install hapi-graphql graphql
然后,我们需要在 Hapi 应用程序中注册插件。我们可以在应用程序的 server.js
文件中添加以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- - ----------- - - ------------------------------ ----- - -------------------- - - ------------------------- ----- - --------- --------- - - -------------------- ----- ------ - --- ------------- ----- ----- ----- ----------- --- ----- ------ - ---------------------- --------- --------- --- ----------------- ------- ------------ -------- - ----- ----------- --------------- - ------ -- ------ - ----- ---- - - --- ----- -------- ------- - ----- --------------- ------------------- ------- --- --------------------- - --------展开代码
在这个代码中,我们首先导入了 graphqlHapi
和 makeExecutableSchema
函数,它们分别用于创建 GraphQL 插件和定义 GraphQL Schema。然后,我们从 ./schema
文件中导入 typeDefs
和 resolvers
,它们用于定义 GraphQL Schema 中的类型和解析器。接下来,我们创建了一个 Hapi 服务器,并在其中注册了 graphqlHapi
插件。我们将 schema
作为 graphqlOptions
的值传递给插件,并启用了跨域资源共享(CORS)。
定义 GraphQL Schema
现在,我们需要定义 GraphQL Schema,它描述了我们的数据模型和 API 的能力。我们可以在 ./schema.js
文件中定义 Schema:
-- -------------------- ---- ------- ----- - --- - - ------------------------------ ----- -------- - ---- ---- ----- - ------ ------ - ---- -------- - ------------------- -------- ------ - -- ----- --------- - - ------ - ------ -- -- ------ ------- -- --------- - ----------- --- - ------- -- -- - ------ -------- - - -- -------------- - - --------- --------- --展开代码
在这个代码中,我们首先导入了 gql
函数,它用于定义 GraphQL Schema 中的类型。我们定义了一个名为 Query
的类型,其中包含一个名为 hello
的字段。我们还定义了一个名为 Mutation
的类型,其中包含一个名为 setMessage
的字段,它接受一个名为 message
的参数,并返回一个字符串。接下来,我们定义了 resolvers
对象,它包含了 Query
和 Mutation
类型中字段的解析器。
使用 GraphQL API
现在,我们可以使用 GraphQL API 来查询和修改数据了。我们可以打开浏览器,输入 http://localhost:4000/graphql
,然后在 GraphQL Playground 中输入以下查询:
query { hello }
这将返回一个包含字符串 Hello World!
的 JSON 响应。我们也可以使用以下修改器:
mutation { setMessage(message: "Hello GraphQL!") }
这将返回一个包含字符串 Hello GraphQL!
的 JSON 响应。我们还可以在 setMessage
查询中传递其他参数,例如:
mutation { setMessage(message: "Hello GraphQL!", language: "en") }
这将返回一个包含字符串 Hello GraphQL! (en)
的 JSON 响应。
结论
在本文中,我们介绍了如何在 Hapi 框架中集成 GraphQL,并使用它来构建一个基本的应用程序。我们讨论了如何安装和配置 hapi-graphql
插件,如何定义 GraphQL Schema,并使用它来查询和修改数据。我们希望这篇文章能够帮助您开始使用 GraphQL,并在您的项目中集成它。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6778ebb6381bbe667f8afdd2