
Tính năng:
Các hàm của Schema
Các hàm của Schema
Schema GraphQL được cung cấp các trường và directive để hiển thị các chức năng từ ngôn ngữ lập trình PHP.
Các trường hàm
Các trường hàm là Trường toàn cục, do đó chúng được thêm vào mọi kiểu trong schema GraphQL: trong QueryRoot, và cả trong Post, User, v.v.
Các trường hàm hữu ích trong việc thao tác dữ liệu sau khi đã được lấy về, cho phép chúng ta chuyển đổi giá trị của một trường theo bất kỳ cách nào cần thiết, và cung cấp cho chúng ta khả năng import/export dữ liệu mạnh mẽ.
Ví dụ, trong khi chúng ta có trường Post.hasComments, chúng ta có thể cần giá trị ngược lại. Thay vì tạo một trường mới Post.notHasComments (mà điều đó đòi hỏi phải chỉnh sửa mã PHP), chúng ta có thể sử dụng tính năng Field to Input để đưa giá trị từ hasComments vào một trường not, từ đó tính toán giá trị mới hoàn toàn trong queries GraphQL:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Các directive hàm
Schema GraphQL được cung cấp các directive hiển thị những chức năng thường thấy trong các ngôn ngữ lập trình (như PHP).
Các trường directive hữu ích trong việc thao tác dữ liệu sau khi đã được lấy về, cho phép chúng ta chuyển đổi giá trị của một trường theo bất kỳ cách nào cần thiết, và cung cấp cho chúng ta khả năng import/export dữ liệu mạnh mẽ.
Ví dụ, queries này:
query {
posts {
title @strUpperCase
}
}...sẽ tạo ra phản hồi sau:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Các trường trợ giúp
Schema GraphQL được bổ sung các trường cung cấp chức năng trợ giúp thường dùng.
Các trường trợ giúp là Trường toàn cục, do đó chúng được thêm vào mọi kiểu trong schema GraphQL: trong QueryRoot, và cả trong Post, User, v.v.
Trong queries này, chúng ta lấy ID của các người dùng trên trang web và thực thi một queries GraphQL mới truyền ID của họ làm tham số:
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
}
}
}Các trường môi trường
Schema GraphQL được cung cấp trường toàn cục _env, cho phép lấy giá trị từ một biến môi trường, hoặc từ một hằng số PHP (thường được định nghĩa trong wp-config.php, nhưng cũng có thể được định nghĩa ở nơi khác).
Queries này lấy hằng số môi trường GITHUB_ACCESS_TOKEN mà chúng ta có thể cài đặt để truy cập một repository riêng tư trên GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}