GraphQL 是一种用于 API 构建的查询语言,它由 Facebook 开发并开源。它提供了一种更为高效的方式来描述和请求数据。在前端开发中,GraphQL 正逐渐成为前端与后端开发团队之间的传统 REST API 的替代方案。
Hapi 是 Node.js 中最受欢迎的 Web 框架之一。它的独特之处在于其插件体系结构和良好的编写 API 的能力。在本文中,我们将介绍如何在 Hapi 框架中构建 GraphQL API。
准备工作
在开始之前,请确保您已经安装了 Node.js 和 npm 并在本地环境中安装了 Hapi 框架。
接下来,我们需要安装一些软件包:
npm install graphql apollo-server-hapi hapi-graceful-shutdown
graphql
: 这个包是一个用于构建 GraphQL API 的标准基础库。apollo-server-hapi
: 这个包是一个 Apollo GraphQL Server 与 Hapi 框架的连接器。hapi-graceful-shutdown
: 这个包是一个用于优雅地关闭 Hapi 服务器的插件。
构建 GraphQL API
构建 GraphQL API 需要定义两个部分:类型和解析器。
我们将定义下面 3 个类型:
ToyType
: 这个类型用于定义玩具模型的结构。Query
: 这个类型用于定义我们可以查询的内容。Mutation
: 这个类型用于定义我们可以更改的内容。
定义类型:
-- -------------------- ---- ------- ----- - ------------------ -------------- ----------- --------------- ------------ - - ------------------- ----- ------- - --- ------------------- ----- ------ ------- -- -- -- --- - ----- -------------------------- -- ----- - ----- ----------------------------- -- ------------ - ----- ----------------------------- -- ---- - ----- -------------------------- -- --- --- ----- ----- - --- ------------------- ----- -------- ------- -- -- -- ----------- - ----- -------- ----- - --- - ----- -------------------------- - -- -------- ----- -------- ----- -- - ----- ---------- - ----- ---------------- - ---- ---- ----- -- - ------------- ------ ------------------- -- -- -------- - ----- --- --------------------- -------- ----- -- -- - ----- ---------- - ----- ---------------- - ---- ------- ------ ---------------- -- -- --- --- ----- -------- - --- ------------------- ----- ----------- ------- -- -- -- ---------- - ----- -------- ----- - ----- - ----- ----------------------------- -- ------------ - ----- ----------------------------- -- ---- - ----- -------------------------- -- -- -------- ----- -------- ----- -- - ----- ---------- - ----- --------------------- ----- ---------- ------------ ----------------- ---- --------- --- ------ - --- -------------- -------- - -- -- -------------- - ----- -------- ----- - --- - ----- -------------------------- - -- -------- ----- -------- ----- -- - ----- -------------------- --- ------- --------- ------ - --- ------- -- -- -- -------------- - ----- -------- ----- - --- - ----- -------------------------- -- ----- - ----- ----------------------------- -- ------------ - ----- ----------------------------- -- ---- - ----- -------------------------- -- -- -------- ----- -------- ----- -- - ----- -------------------- --- ------- ---------------- ------ ----- -- -- --- ---
定义了类型之后,我们需要定义查询和修改类型的解析器:
-- -------------------- ---- ------- ----- --------- - - ------ - ----------- --- ----- -- ---------------- - ---- ---- ----- -- - ------------ --------- -- ------------- -------- -- -- ---------------- - ---- --------------- -- ---------- -- --------- - ---------- --- ----- -- ------------ ------------- --------------- --------- -- -------- -------------- --- ----- -- ------------ ------------ -------- ------ -------- -- -- --- ------- ---- -------------- --- ----- -- ------------ ------------ -------- ------------- -------- -- ------ -- --
最后,我们需要将 Hapi 服务器与 Apollo 连接起来:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- - ------------ - - ------------------------------ ----- - ----------- - - ------------------------------ ----- - ------------ - - ------------------------- ----- - --------- ---------------- - - ---------------------------------- ----- ------ - ------------- ----- ----- ----- ------------ --- ----- ------------ - --- -------------- --------- ---------- -------------- ----- --- ----- ----------- - ----- -- -- - ----- --------------------- ----- ----------------- ------- ------------ -------- - ----- ----------- --------------- - ------- -------------------- -------------- ----- ------------ ------- -- - ------------------- ------ ------ -- -- ------ - ----- ----- -- -- --- ----- --------------- - --------------------- -- - ------------------------- ------------------- ------- --- --------------------- -------------- -- - ----------------- ---------------- ---
我们完成了 Hapi 和 GraphQL 的集成。现在你可以通过访问 http://localhost:3000/graphql
来测试 GraphQL API。
总结
本文中,我们介绍了如何使用 Hapi 框架构建 GraphQL API,我们定义了几个类型和解析器,然后将 Hapi 服务器连接起来。现在,您应该已经了解了如何使用 Hapi 框架构建 GraphQL API,希望这篇文章对您有所启发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6548b10b7d4982a6eb2f63f5