
Functie:
Schemafuncties
Schemafuncties
Het GraphQL-schema wordt voorzien van velden en directives die functionaliteiten van de programmeertaal PHP beschikbaar stellen.
Functievelden
Functievelden zijn Globale Velden en worden daarom toegevoegd aan elk type in het GraphQL-schema: in QueryRoot, maar ook in Post, User, enzovoort.
Functievelden zijn handig om gegevens te bewerken nadat ze zijn opgehaald. Ze stellen je in staat een veldwaarde op elke gewenste manier te transformeren en bieden krachtige mogelijkheden voor het importeren en exporteren van gegevens.
Stel dat we een veld Post.hasComments hebben, maar we de tegenovergestelde waarde nodig hebben. In plaats van een nieuw veld Post.notHasComments te maken (waarvoor we PHP-code zouden moeten aanpassen), kunnen we de functie Field to Input gebruiken om de waarde van hasComments in een not-veld in te voeren. Zo berekenen we de nieuwe waarde altijd binnen de GraphQL-query:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Functie-directives
Het GraphQL-schema wordt voorzien van directives die functionaliteiten beschikbaar stellen die gangbaar zijn in programmeertalen (zoals PHP).
Directive-velden zijn handig om gegevens te bewerken nadat ze zijn opgehaald. Ze stellen je in staat een veldwaarde op elke gewenste manier te transformeren en bieden krachtige mogelijkheden voor het importeren en exporteren van gegevens.
Deze query bijvoorbeeld:
query {
posts {
title @strUpperCase
}
}...produceert de volgende respons:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Hulpvelden
Het GraphQL-schema krijgt velden die veelgebruikte hulpfunctionaliteit bieden.
Hulpvelden zijn Globale Velden en worden daarom toegevoegd aan elk type in het GraphQL-schema: in QueryRoot, maar ook in Post, User, enzovoort.
In deze query halen we de ID's op van de gebruikers op de website en voeren we een nieuwe GraphQL-query uit waarbij hun ID als parameter wordt meegegeven:
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
}
}
}Omgevingsvelden
Het GraphQL-schema wordt voorzien van het globale veld _env, waarmee je een waarde kunt ophalen uit een omgevingsvariabele of uit een PHP-constante (meestal gedefinieerd in wp-config.php, maar kan ook elders worden gedefinieerd).
Deze query haalt de omgevingsconstante GITHUB_ACCESS_TOKEN op, die je kunt instellen om toegang te krijgen tot een privérepository op GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}