配置 Schema查询 'self' 字段
查询 'self' 字段
有时我们需要修改响应的结构,以模拟另一个 GraphQL 服务器或 REST API 的响应。
我们可以通过 self 字段来实现这一点。该字段被添加到 GraphQL schema 的所有类型中,它会将应用的对象本身原样返回:
type QueryRoot {
self: QueryRoot!
}
type Post {
self: Post!
}
type User {
self: User!
}工作原理
self 字段允许在不离开当前查询对象的情况下,向查询添加额外的层级。运行以下查询:
{
__typename
self {
__typename
}
post(by: {id: 1}) {
self {
id
__typename
}
}
user(by: {id: 1}) {
self {
id
__typename
}
}
}...会产生如下响应:
{
"data": {
"__typename": "QueryRoot",
"self": {
"__typename": "QueryRoot"
},
"post": {
"self": {
"id": 1,
"__typename": "Post"
}
},
"user": {
"self": {
"id": 1,
"__typename": "User"
}
}
}
}使用方法
使用 self 人为地添加响应所需的额外层级,并使用字段别名为这些层级设置合适的名称。
例如,以下查询重现了另一个 GraphQL 服务器的结构:
{
categories: self {
edges: postCategories {
node: self {
name
slug
}
}
}
}以下查询重现了 WP REST API 的结构:
{
post(by: {id: 1}) {
content: self {
rendered: content
}
}
}向端点添加 self 字段
向 schema 添加 self 字段可按如下方式配置,按优先级从高到低排列:
✅ 在 schema 配置中定义的自定义端点或 persisted query 的特定模式

✅ 在设置中定义的默认模式
如果 schema 配置的值为 "Default",将使用设置中定义的模式:

使用时机
self 字段可用于将 GraphQL 响应的结构调整为某种特定的所需结构,例如另一个 GraphQL 服务器或 REST API 的结构。
Prev
Next