Datensatzdaten mit dem GraphQL-API-Framework abfragen
Erstellen Sie eine anwenderdefinierte GraphQL-API, um Datensatzdaten aus einer Komponente oder einem Drittparteisystem abzufragen.
Sie können beispielsweise eine Komponente erstellen, die die Fälle anzeigt, die einem SLA zugeordnet sind. Sie können verwenden Next Experience UI Framework Um die benötigte Komponente zu entwickeln und auf Falldaten von der Plattform zuzugreifen, indem ein GraphQL-Schema erstellt wird, das Daten in der Falltabelle definiert.
Weitere Informationen zur Entwicklung von Komponenten finden Sie unter Komponenten für Arbeitsbereich werden entwickelt .
Vorteile von GraphQL
GraphQL ist eine Webabfragesprache, 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 die genauen Daten ab, die Sie von einer Komponente benötigen.
- Verwalten Sie mehrere mögliche Abfragen über eine einzige API im Gegensatz zu mehreren Endpunkten für eine REST-Anforderung.
- Integrieren Sie Systeme von Drittparteien, indem Sie das Schema öffentlich machen.
- Generieren Sie die GraphQL-Abfrage aus Ihrer Komponente, und verarbeiten Sie die Antwort.
Was Sie wissen sollten, bevor Sie beginnen
Bevor Sie mit der Erstellung anwenderdefinierter GraphQL-APIs beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
- GraphQL-Wissen zum Erstellen eines Schemas.
- JavaScript-Wissen zum Definieren des API-Verhaltens.
- Allgemeines Wissen über Webkomponentenkonzepte.
- Ein anwenderdefinierter Arbeitsbereich Komponente zum Verbrauchen von Datensatzdaten.
- Verständnis von ServiceNow Datenmodell, das Sie im Schema angeben möchten.
- GlideRecord-Wissen, um Felder zu Datensatzdaten in Ihren Resolver-Skripts zuzuordnen.
GraphQL-Übersicht
Das Erstellen einer geskripteten GraphQL-API enthält diese Teile:
- GraphQL-Schemadefinitionssprache (SDL)
- Definieren Sie die Struktur und den Datentyp von Feldern, die in einer GraphQL-Abfrage verfügbar sind. Sie können SDL mit definieren Schema Skriptfeld in der Tabelle „GraphQL-Skriptschemas“ [sys_graphql_Schema]. 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 GraphQL-Skriptlöser im Formular GraphQL-Skriptschemas definieren.
- Typeresolver
- Lösen Sie Schnittstellen und Verbindungen in konkrete GraphQL-Typen auf. Sie können beispielsweise eine vereinigung zwischen definieren
IncidentGeben Sie und ein einProblemTyp. 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 Resolver-Zuordnungen in der zugehörigen Liste GraphQL-Skriptlösungszuordnungen im Formular GraphQL-Skriptschemas definieren.
Weitere Informationen zur GraphQL-Abfragesprache finden Sie unter GraphQL-Website .
Um Abfragen für Ihre GraphQL-APIs zu testen, können Sie GraphQL Explorer verwenden, ein integriertes GraphQL-Testtool. Weitere Informationen finden Sie unter Testen Sie GraphQL-APIs mit GraphQL Explorer.
Einschränkungen
Die folgenden GraphQL-Funktionen werden nicht unterstützt:
- Abonnementvorgänge
- Anwenderdefinierte Skalartypen
Introspektion
Standardmäßig sind introspektive Abfragen in Ihren anwenderdefinierten Schemas nicht aktiviert. Informationen zum Aktivieren der Introspektion finden Sie unter Aktivieren Sie introspektive Abfragen für GraphQL-Schemas.
Namespaces
GraphQL-APIs haben zwei verschiedene Namespaces:
- Anwendungsnamespace
- Der Namespace für die anwenderdefinierte Anwendung. Weitere Informationen zu Anwendungsnamespaces 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 einzelnen 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
}
}
}
}Richtlinien und globale Funktionen
@SourceSchemaanweisungOrdnet 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 aufgelöst wird, anstelle des übergeordneten Objekts.
Verwenden Sie
@Sourceanweisung in Ihrem Schemaskript.@ZurückstellenAbfrageanweisung- Verschieben Sie die Verarbeitung eines GraphQL-Fragments bis zu einem späteren Zeitpunkt in der Abfrage. Verwenden Sie diese Abfrageanweisung, um die Rückgabe von Daten für langsam antwortende Felder in einem Fragment zu verzögern. Streamen Sie die Feldergebnisse des zurückgestellten Fragments als mehrteilige Antwort.Hinweis:Zur Verwendung von
@Zurückstellenanweisung, muss Ihr GraphQL-Client mehrteilige/gemischte HTTP-Header akzeptieren. Legen Sie beispielsweise die HTTP-Header auf festAkzeptieren: Mehrteilig/gemischt; Grenze=„-“.Verwenden Sie
@Zurückstellenrichtlinie zur Verbesserung der Zeit bis zur Interaktion des Anwenders. 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 zurückgestellt werden können, um die Leistung zu verbessern. - Resolver-Funktionen
Diese Funktionen sind global verfügbar umgebung Objekt.
- GetArguments() : Gibt die Argumente des vorherigen Felds zurück.
- GetSource() : Gibt das übergeordnete Objekt zurück.
Verwenden Sie in Ihrem Resolver-Skript.
- Typeresolver-Funktionen
Diese Funktionen sind global verfügbar umgebung Objekt.
- GetArguments() : Gibt die Argumente des vorherigen Felds zurück.
- GetObject() : Gibt das übergeordnete Objekt zurück.
- GetTypeName() : Gibt den Namen der Schnittstelle oder des vereinigungstyps zurück.
Verwenden Sie in Ihrem Typeresolver-Skript.
Demo-Anwendung
Aktivieren Sie das Plugin „GraphQL Framework Demo Application“ (com.glide.graphql.framework.demo), um ein Demo-GraphQL-PTO-Kalenderschema mit Mutationen und Abfragen anzuzeigen.