GraphQL 是一种用于构建 API 的查询语言,它是由 Facebook 开发的。使用 GraphQL,开发者可以轻松地按需获取所需的数据,避免了传统的 RESTful API 中的过度获取或需要多次请求的情况。本文将介绍 GraphQL 中使用查询变量的最佳实践方法。
什么是查询变量?
查询变量是将 GraphQL 可重用和动态化的关键之一。查询变量允许将变量传递给查询,使查询变得更加动态和可重用。使用查询变量,开发者可以创建一个可接受参数并根据这些参数进行动态查询和响应的查询。使用查询变量,可以将查询的参数从查询字符串中拆分出来,并将其转换为变量,从而防止代码注入攻击,并使查询的代码更加清晰易懂。
为什么要使用查询变量?
在 GraphQL 中,查询变量具有以下优点:
- 更清晰易懂:使用查询变量能够使代码更加清晰易懂,使得未来的开发者更加容易理解你的代码;
- 安全性更高:将查询字符串中的参数转换为变量可以防止代码注入攻击;
- 可重用性更高:查询变量可以使查询更加动态和可重用,只需要修改相应的变量就可以使用查询;
- 测试更加简单:使用查询变量可以使测试更加简单和可靠,并且能够减少错误和故障的出现。
如何使用查询变量?
在 GraphQL 中,查询变量由两部分组成:声明和引用。声明是查询变量的定义,引用是查询变量的使用。变量声明在查询或图形的参数处,然后在查询或图形中使用它们的引用处引用。以下是一个示例,展示了如何在 GraphQL 中使用查询变量:
-- -------------------- ---- ------- - ---- ----- ----------------------- ---- - -------- -------- - --------- -------- ----- - - - ---- - --------- --- -
在查询中,我们定义了一个变量 $userId
,则在可能在未来的查询中引用它。在查询中,我们使用了 $userId
的引用来获取名为 user
的对象。这个对象有 firstName
、lastName
和 email
三个字段。在查询被执行之前,变量必须得被指定(即称作“填充变量”),这一般在发送请求的时候进行。
最佳实践
以下是一些使用查询变量时应遵循的最佳实践。
始终使用声明
在查询中始终使用声明。声明使变量的用法更清晰,并使未来的维护更容易,因为你已定义了所有变量的类型和默认值。如果忘记定义声明,那么在使用变量时,GraphQL 的类型验证器会发现一些错误。这将使编写可靠的 GraphQL 查询更加困难。
定义变量的默认值
始终定义变量的默认值。这样避免了必须在每次调用变量时指定所有变量。定义默认值还可以使查询变得更加健壮,因为看起来像空字符串的值(例如 ''
或 ""
)也有默认值。如果没有默认值,则 GraphQL 服务器不会为你提供任何类型的帮助,即使参数是由必需的属性定义的,也有可能会发生 GraphQL 查询错误。
使用与类型匹配的带有默认值的输入变量
在 GraphQL 中,查询变量是输入变量。因此,应该始终使用带有默认值的输入变量来定义可重用的查询变量。这将有助于将 GraphQL API 对象保持干净整洁,并且在未来的查询中更加健壮和安全。
避免使用任意变量
任意变量是一种未知类型的值,可以在查询中传递任何类型的值。任意变量是有害的,应该如有必要使用,应该限制变量的类型和包含的值。
结论
在 GraphQL 中,使用查询变量是实现可重用和动态查询的最佳实践方法。使用查询变量可以提高 GraphQL 查询的可读性和可维护性,并使其更加安全和健壮。请记住始终定义变量的声明和默认值,并使用带有默认值的输入变量来定义可重用的查询变量。尽可能地避免使用任意变量。
这是一个示例,展示了如何使用查询变量在 GraphQL 请求中进行动态选择:
query MyQuery($limit: Int!, $offset: Int!) { users(limit: $limit, offset: $offset) { id firstName lastName createdAt } }
填充变量的 JSON 信息:
{ "variables": { "limit": 10, "offset": 0 } }
希望本篇文章能够帮助你更好的使用 GraphQL,并在你的项目中优雅的使用查询变量!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67494deba1ce0063544da6f6