Introspektion mit GraphQL

GraphQL ist eine Abfragesprache, die auf einem Typsystem basiert. GraphQL -Typen definieren, welche Objekte unterstützt werden, welche Felder einem Objekt zugeordnet sind und was abgefragt werden kann und wie dies durch das Schema GraphQL definiert ist. Um GraphQL -APIs effektiv nutzen zu können, ist es wichtig, ein gutes Verständnis des Supply Chain Intelligence Suite -Datenmodells zu haben.

Vorbereitende Schritte

  • Wenn Sie mit GraphQLnoch nicht vertraut sind, füllen Sie das GraphQL -Lernprogramm aus, bis Sie sich mit den Grundlagen der GraphQL -API vertraut fühlen.
  • Installieren Sie einen REST-Client, z. B. Insomnia.
  • Stellen Sie sicher, dass Ihr Browser für das Tool GraphiQL ordnungsgemäß konfiguriert ist.

Informationen zu dieser Task

Eine gute Möglichkeit, das Supply Chain Intelligence Suite -Datenmodellschema zu erlernen, ist die Verwendung der GraphQL -Introspektion. Die Schemaintrospektion kann hilfreich sein, wenn Sie eine Frage zu einem beliebigen Teil des Schemas haben, z. B. welche Objekte definiert sind, welche Felder einem Typ zugeordnet sind, welche Werte einer Aufzählung sind, welche Art von Abfragen unterstützt werden und welche Parameter für eine Abfrage verwendet werden können.

Sie lernen die folgenden Tasks kennen:

  • Vorgehensweise zum Suchen aller unterstützten Typen, wie z. B. Objekte, Schnittstellen, Aufzählung.
  • Hier erfahren Sie, wie Sie weitere Details zu jedem Typ finden, wie z. B. Felder für ein Objekt oder Werte einer Aufzählung.
  • Welche Abfragen unterstützt werden und die Abfragedetails, wie z. B. Parameter.
  • Welche Mutationen unterstützt werden.
  • Vorgehensweise zum Erstellen einer GraphQL -Abfrage auf der Basis von Introspektionsergebnissen

Sie können den Dokumentationsexplorer in GraphiQLverwenden.

Das Tool GraphiQL verwendet Introspektionslogik, um einen interaktiven Schemaexplorer in der Benutzerschnittstelle zu erstellen. Navigieren Sie zur Schnittstelle GraphiQL , indem Sie diese URL in Ihren Browser einfügen:

https://api.ibm.com/infohub/run/graph/na

Beachten Sie auch den Link Docs :

GraphiQL -Dokumente

Wenn Sie auf den Link Docs klicken, sendet GraphiQL eine Schemaintrospektionsanforderung an die GraphQL -API und analysiert dann die Antwort in ein Document Object Model (DOM), in dem Sie anschließend navigieren können. Anschließend wird der Dokumentationsexplorer zusammen mit einer Liste der Objekte der höchsten Ebene im Modell, in diesem Beispiel query und mutation, ausgegeben.

GraphiQL -Dokumentationsexplorer mit Anzeige der Stammtypen von Abfrage und Mutation

In dieser Ansicht können Sie einen Drilldown durchführen, um alle Objekte und ihre Attribute zu untersuchen. Beispiel: Nach einem Drilldown in eine Abfrage zeigt die Ansicht den Wert BusinessEventInput des Attributs eventParams für die Abfrage an:

GraphiQL mit den Feldern, die in der Eingabe BusinessEventverwendet werden

Vorgehensweise

  1. Untersuchen Sie alle Typen, die im Schema im visuellen Editor von GraphQL definiert sind.
    1. Navigieren Sie zu GraphiQL Visual Editor, indem Sie die folgende URL in einem Browser eingeben:
      https://api.ibm.com/infohub/run/graph/na
    2. Fügen Sie die folgende GraphQL -Abfrage links im Editor ein und klicken Sie auf Ausführen.
      query {
       __schema {
      	    types {
      		  name
      		  description
      		  kind
      		}
      		queryType {
      		  fields {
      			name
      			description
      		  }
      		}
         }
       }
      Nach Abschluss der Abfrage wird die Abfrageantwort auf der rechten Seite des Editors angezeigt. Überprüfen Sie die Antwort und suchen Sie einige Beispiele für OBJECT, INTERFACE und ENUM. Objekttypen sind die Basis von GraphQL -APIs. Jedes OBJECT hat Felder, die Daten zugänglich machen und nach Namen abgefragt werden können. INTERFACEs sind eine Liste von Feldern, die von OBJECT-Typen implementiert werden können. ENUM-Typen sind Gruppen diskreter Werte.
      Beispiel für eine Schemaantwort
    3. Navigieren Sie zum Ende der Antwort und zeigen Sie die Liste der unterstützten Abfragen an.
    4. Optional: Verwenden Sie in GraphiQL Visual Editor den Link in der rechten oberen Ecke, um die Schemadefinition zu untersuchen.
  2. Führen Sie dieselbe GraphQL -Schemaabfrage in der Schlaflosigkeit aus.
    1. Öffnen Sie 'Insomnia' und starten Sie eine neue Anforderung mit dem Namen Get Intelligence Suite schema info.
    2. Wählen Sie in der Liste POST aus und geben Sie die folgende URL ein:
      https://api.ibm.com/infohub/run/graph/na
    3. Wählen Sie im Abschnitt für den Anforderungshauptteil GraphQL aus und kopieren Sie dieselbe Abfrage aus dem vorherigen Schritt und fügen Sie sie in das Feld QUERY ein.
    4. SSL-Zertifikatsprüfung in der Insomnia inaktivieren.
    5. Klicken Sie auf Senden und zeigen Sie die Antwort im Antwortabschnitt der Anforderung an:
      Die Antwort muss mit der Antwort identisch sein, die im vorhergehenden Schritt empfangen wurde.
  3. Typdetails selbst überwachen.
    1. Geben Sie die folgende Abfrage für Insomnia ein:
        query {
          __type(name: "BusinessObjectsCursor") {
        	...FullType
          }
        }
      
        fragment FullType on __Type {
          kind
          name
          description
          fields(includeDeprecated: true) {
        	name
        	description
        	args {
        	  ...InputValue
        	}
        	type {
        	  ...TypeRef
        	}
        	isDeprecated
        	deprecationReason
          }
      
          inputFields {
        	...InputValue
          }
      
          interfaces {
        	...TypeRef
          }
      
          enumValues(includeDeprecated: true) {
        	name
        	description
        	isDeprecated
        	deprecationReason
          }
      
          possibleTypes {
        	...TypeRef
          }
        }
      
        fragment InputValue on __InputValue {
          name
          description
          type {
        	...TypeRef
          }
          defaultValue
        }
      
        fragment TypeRef on __Type {
          kind
          name
          ofType {
        	kind
        	name
        	ofType {
        	  kind
        	  name
        	  ofType {
        		kind
        		name
        		ofType {
        		  kind
        		  name
        		  ofType {
        			kind
        			name
        			ofType {
        			  kind
        			  name
        			  ofType {
        				kind
        				name
        			  }
        			}
        		  }
        		}
        	  }
        	}
          }
        }
      
    2. Prüfen Sie die empfangene Antwort.
      BusinessObjectsCursor ist ein OBJECT-Typ, der INTERFACE Cursorimplementiert. Es verfügt über drei definierte Felder: edges, pageInfound totalCount. Feld edges ist eine OBJEKTLISTE BusinessObjectEdge. Wenn Sie die SCHNITTSTELLE kennen, können Sie Abfragen mit unterschiedlichen OBJECT-Typen in den Antworten optimieren.
      Typantwort
    3. Ersetzen Sie den Typnamen in der Abfrage durch andere Typen, die Sie in Schritt 1 oder 2ausgewählt haben. Führen Sie die Abfrage erneut aus und überprüfen Sie die Antworten, um die Typdefinitionen zu verstehen.
  4. Introspektionstypen, die einer Schnittstelle zugeordnet sind
    Obwohl die in Schritt 3 gezeigte Abfrage für jeden Typ verwendet werden kann, bevorzugen Sie möglicherweise einfachere Antworten für bestimmte Typen, z. B. INTERFACE oder ENUM. Sie können eine bereinigte Liste von OBJEKTEN abrufen, die eine bestimmte SCHNITTSTELLE implementieren. Aus Sicht des GraphQL -API-Clients kann die Kenntnis der SCHNITTSTELLE, die von einem OBJECT implementiert wird, helfen, Abfrageantworten zu optimieren.
    1. Verwenden Sie die folgende Abfrage, um alle OBJEKTE zu suchen, die dieselbe SCHNITTSTELLE implementieren.
      query {
      __type(name: "Cursor") {
        name
        kind
        description
        possibleTypes {
          name
          kind
          description
        }
      }
      }  
      Die Antwort zeigt alle Cursor -Objekte an, die in Supply Chain Intelligence Suitedefiniert sind.
      Schnittstellenabfrageantwort
    2. Wählen Sie eine weitere Schnittstelle aus, die Sie in Schritt 1 oder 2ermittelt haben, fügen Sie sie in die Abfrage ein und führen Sie sie aus, damit alle zugeordneten OBJECTs gesucht werden.
  5. ENUM-Werte selbst überwachen.
    Supply Chain Intelligence Suite verwendet zahlreiche ENUMs im Schema. Ein ENUM-Typ definiert eine Gruppe diskreter Werte. Der Supply Chain Intelligence Suite ENUM-Typ BusinessObjectType stellt beispielsweise eine Liste aller Geschäftsobjekte bereit, die im Schema definiert sind. Dieser Schritt zeigt eine Abfrage zum Abrufen der Werteliste einer ENUM.
    1. Kopieren und fügen Sie die folgende Abfrage in das Tool Ihrer Wahl ein und führen Sie die Abfrage aus.
      query {
      __type(name: "BusinessObjectType") {
        name
        kind
        description
        enumValues {
          name
          description
        }
      }
      }
      Überprüfen Sie das Ergebnis, um alle Objekttypen anzuzeigen, die unter ENUM BusinessObjectTypeaufgelistet sind. Diese Liste zeigt, welche Geschäftsdatenobjekte in der API unterstützt werden.
      ENUM, Abfrageantwort
    2. Ersetzen Sie den Typ durch einen anderen ENUM-Typ, den Sie in Schritt 1 oder 2 ausgewählt haben, und führen Sie die Abfrage erneut aus, um die Werteliste für diese ENUM anzuzeigen.
  6. Abfragedefinitionen selbst überwachen.
    Alle unterstützten GraphQL -Abfragen sind in einem speziellen Typ Query im Schema definiert. Sie können die in Schritt 4 definierte Abfrage verwenden, um die zugehörigen Informationen abzurufen.
    1. Führen Sie die folgende GraphQL -Abfrage in Insomnia aus:
        query {
          __type(name: "Query") {
        	...QueryType
          }
        }
      
        fragment QueryType on __Type {
          fields {
        	name
        	description
        	type {
        		name
        		kind
        	}
        	args {
        	  name
        	  description
        	  type {
        		  name
        		  kind
        	  }
        	}
          }
        }
      Überprüfen Sie die Antwort. Jede unterstützte Abfrage wird als Feld in der Antwort angezeigt. Derzeit sind insgesamt vier Abfragen im Schema definiert. Eine der Abfragen ist businessObjectEvents, die eine BusinessEventCursorzurückgibt. Diese Abfrage kann fünf verschiedene Parameter annehmen, von denen einer advancedFilter vom Typ OBJECT BooleanExpist.
      Abfragedefinitionsantwort
  7. Veränderungsdefinitionen selbst überwachen.
    Mutation ist ein weiterer Schematyp, der alle von der API unterstützten Mutationen definiert. Im Gegensatz zu GraphQL -Abfrage-APIs, die zum Abrufen von Daten verwendet werden, werden GraphQL -Mutations-APIs bereitgestellt, um Daten auf dem Server zu ändern. Ersetzen Sie Query in der Abfrage, die in Schritt 6verwendet wird, durch Mutation und überprüfen Sie alle InforHub -Mutationsdefinitionen, d. h., welche Art von Datenbearbeitungen über die Supply Chain Intelligence Suite GraphQL -API unterstützt werden.
  8. Erstellen Sie Ihre Supply Chain Intelligence Suite.
    Sie wissen jetzt, wie Sie alle unterstützten Typen finden und wie Sie die Details jedes Typs finden. Es wurden Beispielabfragen für INTERFACE, ENUM, Query, Mutation bereitgestellt, die ausreichende Informationen für den Einstieg in die Erstellung Ihrer ersten Supply Chain Intelligence Suite GraphQL -Abfrage enthalten.
    1. Verwenden Sie die Abfrage in Schritt 6 , um die Definition einer Abfrage für businessRuleEventszu suchen.
    2. Suchen Sie mithilfe der Abfrage in Schritt 3 nach den Details des Antworttyps.
    3. Verwenden Sie die Abfrage in Schritt 3 , um die Details der einzelnen Abfrageparameter zu suchen.
    4. Erstellen Sie basierend auf den Ergebnissen der vorherigen Schritte eine GraphQL -Abfrage für businessRuleEvents.