GraphQL 是一种由 Facebook 开发的查询语言,其与 RESTful API 相比具有更好的灵活性和可扩展性。而 HapiJS 是一个优秀的 Node.js 框架,它提供了基础设施和工具来构建 Web 应用程序。本文将介绍 HapiJS 的 GraphQL 插件,以及如何使用它来构建高效的 Web 服务。
安装 HapiJS 的 GraphQL 插件
在开始之前,在你的计算机上安装 Node.js 和 npm 是必须的。接下来,执行以下命令来安装并引入 HapiJS 和 GraphQL 插件:
npm install hapi graphql hapi-graphql --save
创建服务器和 GraphQL 插件
我们需要首先创建 HapiJS 服务器和 GraphQL 插件。在启动服务器之前,我们需要将插件引入我们的服务中。插件来源于 npm 包,我们可以使用 server.register
方法进行插件注册:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------- - ------------------- ----- ----------- - ------------------------ ----- ------ - --- -------------- ------------------- ----- ----- ----- ----------- --- -- -- ------- -- ----------------- --------- ------------ -------- - --------------- - ------- -------- -- -- ------- ------ -- ----- ---------- - -- ----- -- - -- ----- ----- ---- --- ------------------ -- - -- ----- ----- ---- ------------------- ------- --- --------------------- ---
在这个例子中,我们将 GraphQL 插件注册到服务器中,目标是将这个插件应用到 '/graphql'
端点上,而我们传递了一个 GraphQL schema 作为 graphqlOptions 的选填项。
编写 GraphQL Schema
GraphQL Schema 是唯一的一个重要的组成部分,它包含了你的服务器可以查询的所有数据类型和相关信息。在下面的示例中,描述了如何定义 Person
和 Company
数据类型以及如何使用 GraphQL 的 list
和 resolve
来查询列表:
-- -------------------- ---- ------- ----- ----------- - --------------------------- ----- ------------ - ---------------------------- ----- - ------------ --------------- ------------------ -------------- ------------- - - -------- ----- ---------- - --- ------------------- ----- --------- ------- -- -- -- --- - ----- ------------- -- ---------- - ----- ------------- -- --------- - ----- ------------- -- -------- - ----- ------------ -------------------- - ------ --------------------------------------------- - - -- --- ----- ----------- - --- ------------------- ----- ---------- ------- -- -- -- --- - ----- ------------- -- ----- - ----- ------------- -- ------------ - ----- ------------- -- ------- - ----- --- ------------------------ -------------------- - ------ ------------------ ---------- -------------- --- - - -- --- ----- ----- - --- ------------------- ----- ------------ ------- - ------- - ----- ----------- ----- - --- - ----- ------------- - -- -------------------- ----- - ------ ------------------------------ - -- -------- - ----- ------------ ----- - --- - ----- ------------- - -- -------------------- ----- - ------ ------------------------------- - -- ------- - ----- --- ------------------------ --------- - ------ --------------------- - -- ---------- - ----- --- ------------------------- --------- - ------ ---------------------- - - - --- -------------- - --- --------------- ----- ---
在这个例子中,Person
和 Company
数据类型被定义了。这些数据类型包含对传递ID值查询的字段,包括关联该类型的数据。比如在 Person
类型中,company
字段被定义为一个对象类型。我们还定义了一个 list
类型,并用 resolve
方法返回相应的查询数据。
测试 GraphQL 插件
完成了我们的 HapiJS 和 GraphQL 配置之后,我们就可以使用 GraphQL 开发者工具来测试服务。
首先,在浏览器中输入 http://localhost:4000/graphql
来进入 GraphQL 查询界面。在界面中输入以下查询语句:
-- -------------------- ---- ------- - ------ - ---------- --------- ------- - ---- - - -
这会返回全局查询结果,并且将 firstName
, lastName
, 和 company
字段包含在查询中。你可以看到,GraphQL 会返回指定的数据类型,包括 employees 和 company data。
进一步学习 GraphQL
GraphQL 拥有强大的查询功能,而且其语言具有一致性和可扩展性。如果你想深入学习 GraphQL,GraphQL 官方网站提供了详细的文档和教程。同时,也有一些开源的实现和框架,如 Apollo,Relay,Graphcool 等,可以帮助你更快地构建高效的 Web 服务。
总结
HapiJS 的 GraphQL 插件是提供了高扩展性的最佳选择之一。它提供了易于使用的 GraphQL 查询语言,以及 HapiJS 框架的灵活性和可扩展性。通过自定义的 Scalable Schema,你可以构建和访问你的 Web 服务数据。在本文中,我们介绍了 HapiJS 和 GraphQL 的基础知识,以及如何使用 GraphQL 插件来创建一个基于 HapiJS 的 GraphQL 服务器。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6489bda548841e98947f9b76