Logo

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")
}

Abonniere unseren Newsletter

Bleib über alle Updates zu Gato GraphQL auf dem Laufenden.