Fragen Sie Datensatzdaten mit dem GraphQL-API-Framework ab

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 3 Minuten Lesedauer
  • Erstellen Sie eine benutzerdefinierte GraphQL-API, um Datensatzdaten von einer Komponente oder einem Drittanbietersystem abzufragen.

    Sie können beispielsweise eine Komponente erstellen, die die einer SLA zugeordneten Fälle anzeigt. Sie können Next Experience UI Framework verwenden, um die benötigte Komponente zu entwickeln und über die Plattform auf Falldaten zuzugreifen, indem Sie ein GraphQL-Schema erstellen, das Daten in der Falltabelle definiert.

    Weitere Informationen zum Entwickeln von Komponenten finden Sie unter Komponenten für den Arbeitsbereichentwickeln.

    Vorteile von GraphQL

    GraphQL ist eine Web-Abfragesprache, die für die clientseitige Entwicklung optimiert ist. Mit geskriptetem GraphQL können Sie:

    • Erkennen Sie Felder und Objekte, die für die Abfrage durch Introspektion verfügbar sind.
    • Fragen Sie genau die Daten ab, die Sie von einer Komponente benötigen.
    • Verwalten Sie mehrere mögliche Abfragen von einer einzigen API aus, im Gegensatz zu mehreren Endpunkten für eine REST-Anforderung.
    • Führen Sie eine Integration mit Systemen von Drittparteien durch, indem Sie das Schema veröffentlichen.
    • Generieren Sie die GraphQL-Abfrage aus Ihrer Komponente, und verarbeiten Sie die Antwort.

    Was Sie wissen müssen, bevor Sie beginnen

    Bevor Sie mit der Erstellung von benutzerdefinierten GraphQL-APIs beginnen, stellen Sie Folgendes sicher:

    • GraphQL-Wissen zum Erstellen eines Schemas.
    • JavaScript-Wissen zum Definieren des API-Verhaltens.
    • Allgemeine Kenntnisse über Webkomponentenkonzepte.
    • Eine benutzerdefinierte Arbeitsbereich -Komponente zum Verarbeiten von Datensatzdaten.
    • Verständnis des Datenmodells ServiceNow, das Sie im Schema verfügbar machen möchten.
    • GlideRecord-Wissen zum Zuordnen von Feldern zum Aufzeichnen von Daten in Ihren Resolver-Skripts.

    GraphQL-Übersicht

    Das Erstellen einer geskripteten GraphQL-API umfasst die folgenden Teile:

    GraphQL-Schemadefinitionssprache (SDL)
    Definieren Sie die Struktur und den Datentyp der in einer GraphQL-Abfrage verfügbaren Felder. Sie können die SDL mithilfe des Skriptfelds Schema in der Tabelle „GraphQL-Skriptschemata“ [sys_graphql_schema] definieren. Die SDL unterstützt nur Abfrage- und Mutationsvorgänge.
    Resolver
    Definieren Sie die von jedem Feld zurückgegebenen Daten. Sie können die Resolver für jedes Feld in der zugehörigen Liste Geskriptete GraphQL-Resolver im Formular „GraphQL-Geskriptete Schemas“ definieren.
    Typauflöser
    Lösen Sie Schnittstellen und Vereinigungen in konkrete GraphQL-Typen auf. Sie können beispielsweise eine Vereinigung zwischen einem Incident -Typ und einem Problemtyp definieren. Verwenden Sie das typeresolver-Skript, um zu definieren, wann welcher zurückgegeben werden soll. Sie können die Typeresolver in der zugehörigen Liste GraphQL Scripted Typeresolvers im Formular GraphQL Scripted Schemas definieren.
    Resolver-Zuordnungen
    Ordnen Sie Resolver Feldern im Schema zu. Sie können Resolverzuordnungen in der zugehörigen Liste GraphQL-geskriptete Resolverzuordnungen im Formular „GraphQL-Geskriptete Schemas“ definieren.

    Weitere Informationen zur GraphQL-Abfragesprache finden Sie auf der GraphQL-Website.

    Um Abfragen an Ihre GraphQL-APIs zu testen, können Sie den GraphQL-Explorer verwenden, ein integriertes GraphQL-Testtool. Weitere Informationen finden Sie unter Testen Sie GraphQL-APIs mit dem GraphQL-Explorer.

    Einschränkungen

    Die folgenden GraphQL-Funktionen werden nicht unterstützt:

    • Abonnementvorgänge
    • Benutzerdefinierte Skalartypen

    Introspektion

    Standardmäßig sind introspektive Abfragen in benutzerdefinierten Schemas nicht aktiviert. Informationen zum Aktivieren der Introspektion finden Sie unter Aktivieren Sie introspektive Abfragen für GraphQL-Schemata.

    Namespaces

    GraphQL-APIs haben zwei verschiedene Namespaces:

    Anwendungsnamespace
    Der Namespace für die benutzerdefinierte Anwendung. Weitere Informationen zu Anwendungs-Namespaces finden Sie unter Anwendungsbereich.
    Schemanamespace
    Der Namespace für das Schema, um sicherzustellen, dass alle Abfragen eindeutig sind. Sie können mehrere Schema-Namespaces in einer einzigen Anwendung haben.

    Beim Abfragen von Daten müssen Sie beide Namespaces in Ihre Abfrage aufnehmen. Die folgende Abfrage sucht beispielsweise nach Daten mit den folgenden Namespaces:

    • Anwendungs-Namespace: x_graph_scope
    • Schema-Namespace: planet
    query {
      x_graph_scope {
        planet {
          findAll {
            name
            mass
            distance
          }
        }
      }
    }

    Direktiven und globale Funktionen

    @source-Schemadirektive

    Ordnet ein GraphQL-Feld dem Wert einer Eigenschaft des übergeordneten Objekts zu. Wenn das Feld über ein separates Resolver-Skript verfügt, verwendet das System den Datensatz, in den es auflöst, anstelle des übergeordneten Objekts.

    Verwenden Sie die Direktive @source in Ihrem Schemaskript.

    @defer- Abfrageanweisung
    Verschieben Sie die Verarbeitung eines GraphQL-Fragments auf einen späteren Zeitpunkt in der Abfrage. Verwenden Sie diese Abfrageanweisung, um die Rückgabe von Daten für langsam reagierende Felder innerhalb eines Fragments zu verzögern. Streamen Sie die Feldergebnisse des zurückgestellten Fragments als mehrteilige Antwort.
    Hinweis:
    Um die Direktive @defer zu verwenden, muss Ihr GraphQL-Client mehrteilige/gemischte HTTP-Kopfzeilen akzeptieren. Legen Sie beispielsweise die HTTP-Kopfzeilen auf Akzeptieren fest: multipart/mixed; Grenze="-".

    Verwenden Sie die Direktive @defer, um die Benutzerzeit bis zur Interaktion zu verkürzen. Vermeiden Sie es, diese Abfrageanweisung wahllos anzuwenden, da dies auch zu Leistungsverschlechterungen führen kann. Führen Sie Leistungstests durch, um zu bestimmen, welche Felder für eine bessere Leistung zurückgestellt werden können.

    Resolver-Funktionen

    Diese Funktionen sind für das globale env- Objekt verfügbar.

    • getArguments(): Gibt die Argumente des vorherigen Felds zurück.
    • getSource(): Gibt das übergeordnete Objekt zurück.

    Zur Verwendung in Ihrem Resolver-Skript.

    Typeresolver-Funktionen

    Diese Funktionen sind für das globale env- Objekt verfügbar.

    • getArguments(): Gibt die Argumente des vorherigen Felds zurück.
    • getObject(): Gibt das übergeordnete Objekt zurück.
    • getTypeName(): Gibt den Namen der Schnittstelle oder des Gewerkschaftstyps zurück.

    Verwenden Sie diese Option in Ihrem Typeresolver-Skript.

    Demoanwendung

    Um ein Demo-GraphQL-PTO-Kalenderschema mit Mutationen und Abfragen anzuzeigen, aktivieren Sie das Plugin „GraphQL Framework Demo Application“ (com.glide.graphql.framework.demo).