
功能:
Schema 函数
Schema 函数
GraphQL schema 提供了用于公开 PHP 编程语言功能的字段和指令。
函数字段
函数字段是全局字段,因此它们会被添加到 GraphQL schema 中的每一个类型:不仅是 QueryRoot,还包括 Post、User 等。
函数字段在数据检索后用于操作数据,允许我们以任何所需的方式转换字段值,并赋予我们强大的数据导入/导出能力。
例如,虽然我们有 Post.hasComments 字段,但有时我们可能需要相反的值。无需创建新字段 Post.notHasComments(那需要编辑 PHP 代码),我们可以使用 Field to Input 功能将 hasComments 的值输入到 not 字段中,从而始终在 GraphQL query 内计算新值:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}函数指令
GraphQL schema 提供了指令,用于公开编程语言(如 PHP)中常见的功能。
指令字段在数据检索后用于操作数据,允许我们以任何所需的方式转换字段值,并赋予我们强大的数据导入/导出能力。
例如,这个 query:
query {
posts {
title @strUpperCase
}
}...将产生以下响应:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}辅助字段
GraphQL schema 中添加了提供常用辅助功能的字段。
辅助字段是全局字段,因此它们会被添加到 GraphQL schema 中的每一个类型:不仅是 QueryRoot,还包括 Post、User 等。
在这个 query 中,我们获取网站上用户的 ID,并以其 ID 作为参数执行新的 GraphQL query:
query {
users {
userID: id
url: _urlAddParams(
url: "https://somewebsite/endpoint/user-data",
params: {
userID: $__userID
}
)
headers: _httpRequestHeaders
headerNameValueEntryList: _objectConvertToNameValueEntryList(
object: $__headers
)
_sendHTTPRequest(input: {
url: $__url
options: {
headers: $__headerNameValueEntryList
}
}) {
statusCode
contentType
body
}
}
}环境字段
GraphQL schema 提供了全局字段 _env,用于从环境变量或 PHP 常量(通常在 wp-config.php 中定义,但也可在其他地方定义)中获取值。
这个 query 获取环境常量 GITHUB_ACCESS_TOKEN,该常量可用于访问 GitHub 上的私有仓库:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}