前言
GraphQL 是一种用于 API 的查询语言。它使得客户端能够准确地获得它所需要的数据,而无需额外获取不需要的数据。在前后端分离的项目中,GraphQL 已经成为了非常流行的查询语言。在前端中,通过使用 JavaScript 代码来对 GraphQL 进行调用,可以实现非常方便的数据获取与处理。但是,对于一些不熟悉 GraphQL 语法的前端开发者来说,写 GraphQL 查询字符串是一项需要付出一定学习成本的工作。近年,NPM 上出现了很多实用的 GraphQL 工具包,其中,graphql-to-js-client-builder 就是其中的一个非常实用的工具包,下面将会介绍如何使用它来方便地在前端中进行 GraphQL 的调用。
安装
执行以下命令,即可成功安装 graphql-to-js-client-builder:
--- ------- ---------------------------- ------
基本用法
先来看一个简单的示例:
------ - ------------------ ----- - ---- ---------- ------ - ----- - ---- ------------------------------- ------ - ------- - ---- ------------------ ----- ------ - -------------------------------------------- ----- ----- - --------------- ----- --------- - --- ----- ------ - ----- ----------------- - ------- ------- -------- - --------------- ------------------ -- ----- ---------------------------- ------ ----------- ------------- -- ------------
可以看到,我们将用到的 graphql-to-js-client-builder 导入了进来,然后使用了它提供的 build 方法,将 schema、query、以及 variables 生成了对应的 GraphQL 调用参数。这个结果被用作请求方法 fetch 的请求体,从而完成了对 GraphQL API 的调用。
详细介绍
buildClientSchema
buildClientSchema 是 GraphQL.js 中提供的解析方法,用于将 GraphQL Schema(通常为字符串形式)进行解析,返回一个可以被 graphql-to-js-client-builder 使用的、详细的 Schema JSON 形式。
----- ------ - --------------------------------
print 将一个 DocumentNode 对象转换为字符串。
----- -------- - ---------------
build
build 方法才是真正执行 GraphQL 请求的函数。它将 schema、query、variables 等参数合并,返回一个包含整合后参数的对象,同时该对象也可直接传入 GraphQL 的 fetch API 中进行调用。其中,schema 是由 buildClientSchema 返回的 Schema JSON,query 由 print 返回的字符串,variables 是包含 GraphQL 请求参数的一个对象。
----- ------ - ----- ----------------- - ------- ------- -------- - --------------- ------------------ -- ----- ---------------------------- ------ ----------- ------------- -- ------------
示例
假设,我们有一个包含用户信息的 GraphQL Schema,其定义如下:
---- ---- - --- --- ----- ------- ---- ---- - ---- ----- - -------- ----- ----- ------ -------- - ---- -------- - ---------------- -------- ---- ------ ----- -
根据这个 Schema,我们可以使用 GraphQL 来获取、修改、删除一些用户信息。如下所示,我们将会以这个 Schema 为基础来展示一下 graphql-to-js-client-builder 的用法。
查询单个用户信息
在 GraphQL 中,查询一个单个用户信息的方式是使用 query 方法,其中通过参数传进该用户的 ID。这里我们将查询 ID 为“1”的用户信息。查询语句如下:
----- - -------- -- - -- ---- --- - -
使用 graphql-to-js-client-builder 来构成此查询,示例如下:
----- ------ - -------------------------------------------- ----- ----- - ------ - -------- ---- - -- ---- --- - --- ----- --------- - - --- - -- ----- ------ - ----- ----------------- - ------- ------- -------- - --------------- ------------------ -- ----- ---------------------------- ------ ----------- ------------- -- ------------
注意,在此示例中我们已经使用了 variables 对象来传递查询参数。
查询多个用户信息
查询多个用户信息的方法是使用 users 方法。其函数体为一个数组,因此会返回一个由多个用户信息构成的数组。查询语句如下:
----- - ----- - -- ---- --- - -
使用 graphql-to-js-client-builder 来构成此查询,示例如下:
----- ------ - -------------------------------------------- ----- ----- - ------ - ----- - -- ---- --- - --- ----- --------- - --- ----- ------ - ----- ----------------- - ------- ------- -------- - --------------- ------------------ -- ----- ---------------------------- ------ ----------- ------------- -- ------------
注意,此查询请求未传递任何 parameters 参数。
修改用户信息
修改用户信息的方法是使用 mutation 方法,同时在其函数体中传递需要被修改的用户 ID 以及需要被更新的用户信息。修改语句如下:
-------- - -------------- -- ----- ------- ---- --- - -- ---- --- - -
使用 graphql-to-js-client-builder 来构成此查询,示例如下:
----- ------ - -------------------------------------------- ----- ----- - --------- - -------------- ---- ----- ------ ---- ----- - -- ---- --- - --- ----- --------- - - --- -- ----- ------- ---- -- -- ----- ------ - ----- ----------------- - ------- ------- -------- - --------------- ------------------ -- ----- ---------------------------- ------ ----------- ------------- -- ------------
增加用户信息
增加用户信息的方法也是使用 mutation 方法,同时在其函数体中传递需要添加的用户名和年龄信息。添加语句如下:
-------- - ---------------- ------- ---- --- - -- ---- --- - -
使用 graphql-to-js-client-builder 来构成此查询,示例如下:
----- ------ - -------------------------------------------- ----- ----- - --------- - ---------------- ------ ---- ----- - -- ---- --- - --- ----- --------- - - ----- ------- ---- -- -- ----- ------ - ----- ----------------- - ------- ------- -------- - --------------- ------------------ -- ----- ---------------------------- ------ ----------- ------------- -- ------------
结语
在前后端分离的开发模式中,使用 GraphQL 查询语言能够更加方便、高效地获取和处理数据。graphql-to-js-client-builder 作为一款实用的 GraphQL 工具包,使得不熟悉 GraphQL 语法的前端开发者也能够愉快地使用 GraphQL 进行数据的查询与处理。本文结合一个完整的 Schema 示例,详细地介绍了 graphql-to-js-client-builder 的基本使用方法和几个实际应用场景,相信读者已经对其有了深入的了解。希望本文能够对前端开发者的 GraphQL 学习和实践能够有少许帮助。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5efbcafa403f2923b035bac6