什么是 GraphQL?
GraphQL 是一种用于 API 的查询语言,由 Facebook 开发。它提供了一种更高效、更强大的方式来获取数据,可以让客户端指定需要的数据,从而避免了传统 REST API 中的一些常见问题,例如过度获取或未获取足够的数据。
GraphQL 的查询语言是一种类似于 JSON 的结构,可以描述数据的形状和关系。客户端可以编写一个查询,该查询指定所需的数据,然后将其发送到服务器。服务器将响应一个包含请求的数据的 JSON 对象,而不是传统 REST API 中的多个端点。
在 JavaScript 中使用 GraphQL
在 JavaScript 中,可以使用许多不同的库和工具来使用 GraphQL。本文将介绍使用 GraphQL.js 库和 GraphQL HTTP 中间件的基本示例。
安装和设置
首先,需要安装以下依赖项:
npm install graphql graphql-tools express express-graphql
然后,可以创建一个简单的 Express 应用程序,并在其中设置 GraphQL 中间件:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- - ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ------ ------ - --- ----- ---- - - ------ -- -- ------ -------- -- ----- --- - ---------- ------------------- ------------- ------- ------- ---------- ----- --------- ----- ---- ---------------- -- -- -------------------- - ------- --- ------ -- ---------------------------------
这将创建一个简单的 GraphQL API,其中包含一个名为“hello”的查询,该查询返回字符串“Hello world!”。可以使用 GraphiQL 工具在浏览器中测试 API。
查询和变量
可以使用 GraphQL 查询语言来编写查询。例如,可以编写以下查询:
query { hello }
这将返回以下 JSON 响应:
{ "data": { "hello": "Hello world!" } }
可以使用变量来传递参数给查询。例如,可以编写以下查询:
query($name: String!) { hello(name: $name) }
然后可以在 GraphiQL 中设置变量值:
{ "name": "Alice" }
这将返回以下 JSON 响应:
{ "data": { "hello": "Hello Alice!" } }
模式和解析器
可以使用 GraphQL.js 库来创建更复杂的模式和解析器。例如,可以创建一个包含多个类型的模式:
-- -------------------- ---- ------- ----- - ------------------ -------------- ----------- ------------- - - ------------------- ----- -------- - --- ------------------- ----- ------- ------- - --- - ----- ---------- -- ----- - ----- ------------- -- ------ - ----- ------------- -- -- --- ----- --------- - --- ------------------- ----- -------- ------- - ----- - ----- --------- ----- - --- - ----- ---------- -- -- -------- ------ ----- -------- ----- -- - -- ------ ---- -- -- -- -- -- --- ----- ------ - --- --------------- ------ ---------- ---
这将创建一个包含名为“User”的类型的模式,该类型包含 id、name 和 email 字段。还创建了一个名为“Query”的类型,该类型包含一个名为“user”的字段,该字段接受一个 id 参数,并在解析器函数中返回相应的用户。
数据源
可以使用任何数据源来填充 GraphQL API。例如,可以使用 MongoDB 数据库:
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- - ------------------ -------------- ----------- ------------- - - ------------------- ----- -------- - --- ------------------- ----- ------- ------- - --- - ----- ---------- -- ----- - ----- ------------- -- ------ - ----- ------------- -- -- --- ----- --------- - --- ------------------- ----- -------- ------- - ----- - ----- --------- ----- - --- - ----- ---------- -- -- -------- ----- ------ ----- -------- ----- -- - ----- ------ - ----- ------------------------------------------------- ----- -- - ------------------ ----- ----- - ----------------------- ----- ---- - ----- --------------- --- ------- --- --------------- ------ ----- -- -- -- --- ----- ------ - --- --------------- ------ ---------- ---
这将创建一个名为“User”的类型,该类型包含 id、name 和 email 字段。还创建了一个名为“Query”的类型,该类型包含一个名为“user”的字段,该字段接受一个 id 参数,并在解析器函数中使用 MongoDB 数据库返回相应的用户。
结论
GraphQL 提供了一种更高效、更强大的方式来获取数据,并且可以在 JavaScript 中轻松使用。本文提供了一个简单的示例,展示如何在 JavaScript 中使用 GraphQL.js 库和 GraphQL HTTP 中间件来创建和测试 GraphQL API。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67635b47856ee0c1d41dcac2