创建持久化 Query
持久化 Query 是 GraphQL 与 REST API 的结合:它是一个普通的 GraphQL query,发布在站点上并通过独立的 URL 访问,类似于 REST 端点。
例如,我们可以通过以下持久化 Query 对外暴露网站数据:
/graphql-query/homepage-posts/graphql-query/user-widget/graphql-query/post-content(传入文章 ID 执行:?post=1)/graphql-query/post-content/es(将文章内容翻译为西班牙语)- 其他

执行持久化 Query
持久化 Query 发布后,即可通过其固定链接执行。
由于持久化 Query 通过 GET 方式访问,可直接在浏览器中执行,并以 JSON 格式获取所请求的数据:

在应用程序中执行持久化 Query
请参阅指南「从客户端连接到 GraphQL 服务器」中的操作说明。
访问所有持久化 Query
点击插件菜单中的"Persisted Queries",即可显示已创建的所有持久化 Query 列表:

创建新的持久化 Query
点击"Add New GraphQL persisted query"按钮,打开 WordPress 编辑器:

输入标题并确认固定链接符合预期,然后填写 GraphQL query,选择 schema 配置并调整选项。准备就绪后,点击 Publish 按钮,固定链接即成为持久化 Query 的端点。
端点(及源码)的链接显示在"Persisted Query Endpoint Overview"侧边栏面板中:

默认情况下,持久化 Query 的端点路径为 /graphql-query/,该值可在设置中修改:

Query 编辑器
编辑器中的 GraphiQL 客户端是输入 GraphQL 持久化 Query 的地方:

编辑器附带 Explorer 插件,可通过点击左侧面板中的字段来组合 query。点击"Run"按钮执行 query,预览响应结果:

Schema 配置
持久化 Query 中所请求字段的访问权限由 schema 配置定义。
因此,我们需要创建 schema 配置,然后从下拉菜单中选择(或选择"无"或默认配置):

私有持久化 Query
将持久化 Query 的状态设为 private 后,该端点仅管理员用户可访问。这可防止数据被意外共享给无权访问的用户。
例如,我们可以创建私有持久化 Query 来辅助应用管理,如获取数据以生成指标报告。

密码保护的持久化 Query
如果我们为特定客户创建持久化 Query,可以为其设置密码,以提供额外的安全保障,确保只有该客户才能访问端点。

首次访问密码保护的持久化 Query 时,会看到一个要求输入密码的界面:

输入并验证密码后,用户方可访问目标端点。
通过 URL 参数使持久化 Query 动态化
执行持久化 Query 时,可通过 URL 参数(使用变量名)为每个变量设置值。若启用了"Do URL params override variables?"选项,则 URL 参数优先;否则,变量字典中定义的值优先(如有)。
例如,在此 query 中,结果数量通过变量 $limit 控制,默认值为 3:

执行此持久化 Query 时,传入 ?limit=5 将使 query 返回 5 条结果:

创建持久化 Query 层级
请阅读创建 API 层级的相关说明。
禁用持久化 Query
在选项中将"Enabled"设为 false 即可禁用持久化 Query。
当持久化 Query 作为 API 层级的一部分,为子持久化 Query 提供公共行为,但自身无需被执行时,此功能非常有用。
为持久化 Query 添加描述
使用文档设置面板中的"Excerpt"字段,为持久化 Query 添加描述。
更多信息请参阅指南「为 API 添加描述」。
在发布前测试持久化 Query
状态为 draft 或 pending 的持久化 Query 仅对 schema 编辑器用户可用。
因此,我们可以创建持久化 Query,分配 Schema 配置,将其发布为 draft 或 pending,然后进行测试(例如:验证其访问控制规则是否合适)。
审核通过后,再将状态设为 publish,使持久化 Query 对所有人可用。
查看源码
在端点后附加 ?view=source,即可显示持久化 Query 的配置(前提是用户已登录且其角色具有访问权限):

WordPress 编辑器中的配置
以下是编辑器正文中的输入项:
| 输入项 | 说明 |
|---|---|
| 标题 | 持久化 Query 的标题 |
| GraphiQL 客户端 | 用于编写和执行 GraphQL query 的编辑器:
GraphiQL Explorer 启用时显示)允许通过点击字段将其自动添加到 query 中 |
| Schema 配置 | 从下拉菜单中选择适用于持久化 Query 的 schema 配置,或以下选项之一:
|
| 选项 | 自定义持久化 Query 的行为:
|
以下是文档设置中的输入项:
| 输入项 | 说明 |
|---|---|
| 固定链接 | 持久化 Query 发布后的端点路径 |
| 分类 | 可对持久化 Query 进行分类。 例如: mobile、app 等 |
| Excerpt | 为持久化 Query 提供描述。 此输入项在模块 Excerpt as Description 启用时可用 |
| 页面属性 | 选择父持久化 Query。 此输入项在模块 API Hierarchy 启用时可用 |