Logo

功能:

Schema 函数

Schema 函数

GraphQL schema 提供了用于公开 PHP 编程语言功能的字段和指令。

函数字段

函数字段是全局字段,因此它们会被添加到 GraphQL schema 中的每一个类型:不仅是 QueryRoot,还包括 PostUser 等。

函数字段在数据检索后用于操作数据,允许我们以任何所需的方式转换字段值,并赋予我们强大的数据导入/导出能力。

例如,虽然我们有 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,还包括 PostUser 等。

在这个 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")
}

订阅我们的新闻通讯

及时了解 Gato GraphQL 的所有更新。