Persisted Queries
Persisted Queries低级别 Persisted Query 编辑

低级别 Persisted Query 编辑

Included in the “Power Extensions” bundle

在编辑 Persisted Query 时,使通常隐藏的指令(向 GraphQL 服务器注入某些功能)可见。

说明

在 GraphQL 中,指令是能够修改字段结果的函数。例如,@strUpperCase 指令会将字段的值转换为大写格式。

指令有两种类型:一种应用于 schema,在每次 query 执行时始终生效;另一种由用户或客户端应用程序应用于 query。

在 Gato GraphQL 中,解析 query 时涉及的大量功能通过应用于 schema 的指令来执行。

例如,Cache Control 通过在 schema 上应用 @cacheControl 指令来实现。该配置默认隐藏,由插件通过用户界面来处理:

定义缓存控制策略

类似地,以下指令为字段提供访问控制(类似的指令也为指令提供访问控制):

  • @disableAccess
  • @validateIsUserLoggedIn
  • @validateIsUserNotLoggedIn
  • @validateDoesLoggedInUserHaveAnyRole.
  • @validateDoesLoggedInUserHaveAnyCapability
  • @validateDoesVisitorComeFromAnyAllowedIP
  • @validateDoesVisitorNotComeFromAnyDeniedIP

Low-Level Persisted Query Editing 扩展使所有应用于 schema 的指令在编辑 Persisted Query 时可在 GraphiQL 编辑器中使用,让您无需通过用户界面,即可直接在 Persisted Query 中添加 schema 类型的指令。

Persisted Queries 编辑器中可用的 schema 类型指令

例如,Cache Control 的定义可以直接在 Persisted Query 中完成,通过在字段上设置带有 maxAge 参数的 @cacheControl 指令;或者通过直接在字段上添加对应的 @validate... 指令来定义访问控制:

schema 类型指令