如果你是一名 Web 开发者,你肯定不会陌生于 RESTful API,它是当前 Web 应用开发中最常用的 API 架构方式。但是,最近出现了一种新的 API 架构方式 - GraphQL。GraphQL 是由 Facebook 发布的一种数据查询语言,相比 RESTful API 具有更好的灵活性、可扩展性和可维护性。本文将介绍在 Node.js 中使用 GraphQL 的方法。
GraphQL 的基本原理
GraphQL 的本质是一种查询语言和运行环境。它不像 RESTful API 那样,将数据暴露在 URL 上,而是通过一个统一的 URL (通常为 /graphql)将请求发送到服务器,让服务器根据请求的查询参数返回数据。具体来说,GraphQL 有以下特点:
面向查询,也就是说,客户端使用 GraphQL 只需要提供其所需要的数据字段和类型就可以得到想要的数据。GraphQL 会根据客户端提供的信息生成相应的查询语句并执行。
一切都是类型,GraphQL 会在服务端定义一种被称为“schema”的结构,该结构可以定义查询时可以访问的数据类型、输入类型和返回类型等。
节点之间的关联性更明确,如果客户端需要获取两个实体之间的关系,那么客户端只需要指定两个实体之间的关系即可,而不需要像 RESTful API 那样通过 URL 参数拼接来传递关系。
在 Node.js 中使用 GraphQL 可以借助于 GraphQL.js,它是由 Facebook 维护的官方底层库。GraphQL.js 支持服务器端的 schema 定义和解析 GraphQL 查询语句。下面是一个基本的示例:
-- -------------------- ---- ------- ----- - -------- ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ------ ------ - --- ----- ---- - - ------ -- -- ------ ------- -- --------------- -- ----- --- --------------------- -- - ---------------------- ---
在这个示例中,我们定义了一个简单的 schema,它有一个 Query 类型,其中仅包含一个 hello 字段,它返回字符串类型。root 对象是构建 schema 时声明的响应函数,该响应函数由客户端请求启动。我们使用 graphql 函数将查询字符串('{ hello }')传递给服务器来响应查询。执行结果会是一个包含查询返回的数据的 promise。在这个简单的示例中,我们可以看到我们得到了响应的 hello 信息。
具体的原理和使用方式,可以查看 GraphQL.js 的指南和 API 文档。
将 GraphQL 集成到 Node.js 应用程序中
下面是一个更完整的示例来说明如何使用 GraphQL 在 Node.js 应用程序中返回数据。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- - ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ------ ------ -------------- ------ ------- ------ -------------- ----- - --- ----- ---- - - ------ -- -- ------ -------- -------------- -- -- ------------- - --- - ----- -- ----- - ---------- ---- -------- ------- -- -- -------------- -------------- -- -- --- -- --------- -- ------------------------ - -- - --- -- ----- --- - ---------- -------- ----------- ------------- ------- ------- ---------- ----- --------- ----- -- -- ---------------- -- -- ---------------- ------ -- ------------------------------- --
在这个示例中,我们使用 Express 和 express-graphql 来处理 GraphQL 请求。我们首先定义了一个简单的 schema,该 schema 具有 4 个 Query 类型的字段,hello,quoteOfTheDay,random 和 rollThreeDice。接着,我们定义了一个包含 4 个查询的 root 对象。这些查询可以返回简单的字符串、随机数以及一个数组,并且按需提供给客户端请求。最后,我们使用 Express 并使用 graphqlHTTP 中间件提供了一个 GraphQL 服务。默认情况下,graphiql 选项设置为 true,因此我们将获得一个可互动的调试功能的 web 界面。您可以通过向 http://localhost:4000/graphql 发送 POST 请求来测试该应用程序,并执行 GraphQL 查询文本。
结论
GraphQL 不仅是现代 Web 应用程序开发的趋势,还可以提高 Web 应用程序的效率和可维护性。在 Node.js 中使用 GraphQL 可以借助于 GraphQL.js 库,该库为您提供了使用 GraphQL 的必要功能。通过遵循这里所展示的几个具体示例,您可以在自己的应用程序中轻松地集成 GraphQL API。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6774a1eb6d66e0f9aaeec5d6