
Funktion:
Schema-Funktionen
Schema-Funktionen
Das GraphQL-Schema wird mit Feldern und Direktiven ausgestattet, die Funktionalitäten der Programmiersprache PHP exponieren.
Funktionsfelder
Funktionsfelder sind globale Felder und werden daher jedem einzelnen Typ im GraphQL-Schema hinzugefügt: in QueryRoot, aber auch in Post, User usw.
Funktionsfelder sind nützlich, um Daten nach dem Abrufen zu manipulieren. Sie ermöglichen es uns, einen Feldwert auf beliebige Weise zu transformieren, und verleihen uns leistungsstarke Datenimport- und -exportfähigkeiten.
Obwohl wir beispielsweise ein Feld Post.hasComments haben, benötigen wir möglicherweise den gegenteiligen Wert. Anstatt ein neues Feld Post.notHasComments zu erstellen (wofür wir PHP-Code bearbeiten müssten), können wir die Funktion Field to Input verwenden, um den Wert von hasComments in ein not-Feld einzugeben und so den neuen Wert direkt innerhalb der GraphQL-Abfrage zu berechnen:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Funktionsdirektiven
Das GraphQL-Schema wird mit Direktiven ausgestattet, die Funktionalitäten exponieren, die in Programmiersprachen (wie PHP) häufig vorkommen.
Direktiv-Felder sind nützlich, um Daten nach dem Abrufen zu manipulieren. Sie ermöglichen es uns, einen Feldwert auf beliebige Weise zu transformieren, und verleihen uns leistungsstarke Datenimport- und -exportfähigkeiten.
Diese Abfrage zum Beispiel:
query {
posts {
title @strUpperCase
}
}...liefert diese Antwort:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Hilfsfelder
Dem GraphQL-Schema werden Felder hinzugefügt, die häufig verwendete Hilfsfunktionalitäten bereitstellen.
Hilfsfelder sind globale Felder und werden daher jedem einzelnen Typ im GraphQL-Schema hinzugefügt: in QueryRoot, aber auch in Post, User usw.
In dieser Abfrage rufen wir die IDs der Benutzer der Website ab und führen eine neue GraphQL-Abfrage aus, die ihre ID als Parameter übergibt:
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
}
}
}Umgebungsfelder
Das GraphQL-Schema wird mit dem globalen Feld _env ausgestattet, das es ermöglicht, einen Wert aus einer Umgebungsvariablen oder aus einer PHP-Konstante abzurufen (am häufigsten in wp-config.php definiert, kann aber auch anderswo definiert sein).
Diese Abfrage ruft die Umgebungskonstante GITHUB_ACCESS_TOKEN ab, die wir einrichten könnten, um auf ein privates Repository bei GitHub zuzugreifen:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}