GraphQL 是一种查询语言,它可以帮助前端开发者快速地从后端获取数据。Hapi 是一个 Node.js 后端框架,它可以帮助开发者构建可扩展和易于测试的服务器应用程序。本文将介绍如何使用 Hapi 框架构建 GraphQL API。
安装 Hapi 和其他依赖项
首先,你需要安装一些必要的依赖项,包括 Hapi、GraphQL、Apollo Server 和 Joi(用于验证数据)。你可以使用 npm 通过以下命令来安装它们:
npm install hapi graphql apollo-server-hapi joi
定义 GraphQL 模型
在使用 Hapi 框架构建 GraphQL API 时,你需要定义一个 GraphQL 模型。这个模型描述了你希望从后端获取的数据的类型和结构。下面是一个示例 GraphQL 模型:
-- -------------------- ---- ------- ---- ------ - --- --- ----- ------- ------- --------- - ---- ----- - --- --- ----- ------- ------- ------- - ---- ----- - ---------- ----- ------ --------- ----- ----- ------- --------- -------- ---------- - ---- -------- - ----------------- -------- --------- ----- ------ ------------------ --------- ------- -
这个模型定义了两个对象类型:Author
和 Tweet
,以及两个根操作类型:Query
和 Mutation
。每个对象类型都有一些属性。Author
对象类型包括 id
、name
和 tweets
属性,而 Tweet
对象类型包括 id
、text
和 author
属性。Query
根操作类型包含获取作者和推文的一些查询,而 Mutation
根操作类型允许你创建新的作者和推文。
实现 GraphQL API
一旦你已经定义了 GraphQL 模型,现在可以使用 Hapi 框架实现 GraphQL API 了。下面是一个示例:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- - ------------- --- - - ------------------------------ ----- --- - --------------- ----- ------ - --- ------------- ----- ----- ----- ----------- --- ----- -------- - ---- -- --- ------- ---- -- ----- --------- - - ------ - ------- ----- -------- - -- -- - -- -- -- - ------ ------------------------ -- ------ ----- -------- - -- -- - -- -- -- - ------ ----------------------- -- ------- ----- -------- ----- - -- -- -- - ------ -------------------- -- -------- ----- -------- ----- - -- -- -- - ------ --------------------- -- -- --------- - ------------ ----- -------- - ----- -------- -- - -- -- -- - ----- ----- - - ----- -------- -- ----- ------------------------ ------ ------ -- ------------- ----- -------- - ---- -- - -- -- -- - ----- ------ - - ---- -- ----- -------------------------- ------ ------- -- -- ------- - ------- ----- -------- ----- - -- -- -- - ------ ------------------- ------ - --------- --------- - --- -- -- ------ - ------- ----- ------- ----- - -- -- -- - ------ ------------------------------------ - - -- ----- ------ - --- -------------- --------- ---------- -------- - --- --------------- - --- ----- ---- - ----- -- -- - ------------------------ ---- ------- ----- ---------- --- --- - ----- --------------- - ----- ----- - ----------------- ---------------- - ------------------- ------- --- --------------------- -- -------
这段代码通过 ApolloServer
和 typeDefs
、resolvers
以及 context
参数创建了一个 GraphQL API 服务器。typeDefs
和 resolvers
定义了 GraphQL 模型和查询。context
参数用于将数据库对象提供给解析器函数。
测试 GraphQL API
现在,你已经构建了一个 GraphQL API 服务器,可以进行测试了。你可以使用 GraphQL Playground(通常在 localhost:4000/graphql
中找到)或其他 GraphQL 客户端工具测试它。
下面是一些查询和突变的例子:
查询作者和推文:
query GetAuthorTweets($id: ID!) { author(id: $id) { name tweets { text } } }
创建新的推文:
-- -------------------- ---- ------- -------- --------------------- -------- ---------- ---- - ----------------- ------ --------- ---------- - -- ---- ------ - ---- - - -
查询所有作者:
query GetAllAuthors { authors { name } }
总结
使用 Hapi 框架构建 GraphQL API 是一种快速、安全且易于维护的方法。本文介绍了如何在 Hapi 框架中定义 GraphQL 模型,并实现 GraphQL API。通过这些步骤,开发人员可以利用 GraphQL 接口快速从后端获取数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651a82a095b1f8cacd26bdf6