
機能:
スキーマ関数
スキーマ関数
GraphQLスキーマには、PHPプログラミング言語の機能を公開するフィールドおよびディレクティブが提供されています。
関数フィールド
関数フィールドはグローバルフィールドであるため、GraphQLスキーマ内のすべての型(QueryRootのみならずPostやUserなど)に追加されます。
関数フィールドは、データ取得後にそのデータを操作するのに役立ちます。フィールドの値を必要な方法で変換でき、強力なデータのインポート/エクスポート機能を提供します。
例えば、Post.hasCommentsフィールドは存在しますが、その逆の値が必要な場合があります。新たにPost.notHasCommentsフィールドを作成する(そのためにPHPコードを編集する必要がある)代わりに、Field to Input機能を使ってhasCommentsの値をnotフィールドに入力し、GraphQLクエリ内で常に新しい値を計算することができます。
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}関数ディレクティブ
GraphQLスキーマには、PHPをはじめとするプログラミング言語で一般的に見られる機能を公開するディレクティブが提供されています。
ディレクティブフィールドは、データ取得後にそのデータを操作するのに役立ちます。フィールドの値を必要な方法で変換でき、強力なデータのインポート/エクスポート機能を提供します。
例えば、このクエリは:
query {
posts {
title @strUpperCase
}
}...次のレスポンスを生成します:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}ヘルパーフィールド
GraphQLスキーマには、よく使われるヘルパー機能を提供するフィールドが追加されています。
ヘルパーフィールドはグローバルフィールドであるため、GraphQLスキーマ内のすべての型(QueryRootのみならずPostやUserなど)に追加されます。
このクエリでは、ウェブサイト上のユーザーのIDを取得し、そのIDをパラメーターとして渡して新たなGraphQLクエリを実行します:
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スキーマには、環境変数またはPHP定数(一般的にはwp-config.phpで定義されますが、他の場所で定義することも可能)の値を取得できるグローバルフィールド_envが提供されています。
このクエリは、GitHubのプライベートリポジトリにアクセスするために設定する環境定数GITHUB_ACCESS_TOKENを取得します:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}