
Özellik:
Şema Fonksiyonları
Şema Fonksiyonları
GraphQL şeması, PHP programlama dilinin işlevselliklerini ortaya çıkaran alanlar ve direktiflerle donatılmıştır.
Fonksiyon Alanları
Fonksiyon alanları Global Alanlardır ve bu nedenle GraphQL şemasındaki her türe eklenir: QueryRoot'a, aynı zamanda Post, User vb. türlere de.
Fonksiyon alanları, veriler alındıktan sonra işlenmesi için kullanışlıdır; bir alan değerini istenen herhangi bir şekilde dönüştürmemize ve güçlü veri içe/dışa aktarma yetenekleri kazanmamıza olanak tanır.
Örneğin, bir Post.hasComments alanına sahipken, karşıt değere ihtiyaç duyabiliriz. PHP kodu düzenlememizi gerektiren yeni bir Post.notHasComments alanı oluşturmak yerine, Field to Input özelliğini kullanarak hasComments değerini bir not alanına giriş olarak verebilir ve böylece GraphQL query'sinin içinde her zaman yeni değeri hesaplayabiliriz:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Fonksiyon Direktifleri
GraphQL şeması, programlama dillerinde (PHP gibi) yaygın olarak bulunan işlevsellikleri ortaya çıkaran direktiflerle donatılmıştır.
Direktif alanları, veriler alındıktan sonra işlenmesi için kullanışlıdır; bir alan değerini istenen herhangi bir şekilde dönüştürmemize ve güçlü veri içe/dışa aktarma yetenekleri kazanmamıza olanak tanır.
Örneğin, bu query:
query {
posts {
title @strUpperCase
}
}...şu yanıtı üretecektir:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Yardımcı Alanlar
GraphQL şemasına yaygın olarak kullanılan yardımcı işlevsellikleri sağlayan alanlar eklenir.
Yardımcı alanlar Global Alanlardır ve bu nedenle GraphQL şemasındaki her türe eklenir: QueryRoot'a, aynı zamanda Post, User vb. türlere de.
Bu query'de, web sitesindeki kullanıcıların ID'lerini alıyoruz ve ID'lerini parametre olarak geçirerek yeni bir GraphQL query'si çalıştırıyoruz:
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
}
}
}Ortam Alanları
GraphQL şeması, bir ortam değişkeninden veya bir PHP sabitinden (en yaygın olarak wp-config.php'de tanımlanan, ancak başka yerlerde de tanımlanabilen) değer elde etmeye olanak tanıyan global _env alanıyla donatılmıştır.
Bu query, GitHub'daki özel bir depoya erişmek için ayarlayabileceğimiz GITHUB_ACCESS_TOKEN ortam sabitini alır:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}