
기능:
스키마 함수
스키마 함수
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")
}