Suche…


Bemerkungen

GraphQL ist eine Abfragesprache für APIs und eine Laufzeitumgebung, um diese Abfragen mit Ihren vorhandenen Daten auszuführen . GraphQL bietet eine vollständige und verständliche Beschreibung der Daten in Ihrer API, gibt Kunden die Möglichkeit, genau nach dem zu fragen, was sie benötigen, und nichts weiter, erleichtert die Entwicklung von APIs im Laufe der Zeit und ermöglicht leistungsfähige Entwickler-Tools.

Wann sollte ich GraphQL verwenden?

GraphQL soll die nach außen gerichtete HTTP-API für jede Art von Anwendung sein, ist jedoch am stärksten, wenn die Daten mit stark miteinander verbundenen Collections | Tables | Nodes normalisiert werden. Die GraphQL Query Language (GQL) ist darauf ausgelegt, miteinander verbundene Daten auf sehr intuitive und flexible Weise zu projizieren.

Implementierungen

GraphQL selbst ist ein Spec und wird realisiert durch eine Reihe von verschiedenen Programmiersprachen. Dies sind die beliebtesten unterstützten Sprachen

Client-Bibliotheken

Das Ausführen von Abfragen von der Clientseite kann mit jedem HTTP-Client durchgeführt werden, aber clientseitige Bibliotheken können sehr vorteilhaft sein.

Entwicklungswerkzeuge

Versionen

Ausführung Veröffentlichungsdatum
v0.5.0 2016-04-08
v0.6.0 2016-05-10
v0.6.1 2016-07-07
v0.6.2 2016-07-21
v0.7.0 2016-08-26
v0.7.1 2016-09-29
v0.7.2 2016-10-10
v0.8.0 2016-11-10
v0.8.1 2016-11-11
v0.8.2 2016-11-16

Serverinstallation und Implementierung

GraphQL.js

GraphQL.js ist eine JavaScript-Referenzimplementierung für GraphQL. Sie können es über npm installieren:

  • Initialisieren Sie npm in Ihrem Projekt, wenn Sie dies noch nicht getan haben: npm init
  • Installieren Sie GraphQL.js von npm: npm install --save graphql

Beispiel Server

var { graphql, buildSchema } = require('graphql');

// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
  type Query {
    hello: String
  }
`);

// The root provides a resolver function for each API endpoint
var root = {
  hello: () => {
    return 'Hello world!';
  },
};

// Run the GraphQL query '{ hello }' and print out the response
graphql(schema, '{ hello }', root).then((response) => {
  console.log(response);
});

Server-Middleware-Alternativen

GraphQL-Abfragesprache (GQL)

Anstatt URL-Endpunkte für jede Datenressource zu definieren, definieren Sie in GraphQL einen einzelnen Endpunkt, der GraphQL-Abfragen akzeptiert. Im Gegensatz zu herkömmlichen Datenbankabfragesprachen ist GraphQL Query Language (GQL) eine Projektion von Daten, die von einer Abfrage auf Stammebene zurückgegeben werden. Das GraphQL-Schema definiert das Datenmodell und Abfragen und Mutationen auf Stammebene. GQL führt diese Abfragen aus und definiert, welche Daten zurückgegeben werden sollen.

Abfrage für alle Filmtitel aus Star Wars Schema

Star Wars-Datenabfrage für allFilms mit einer Projektion nur des Titels GraphiQL-Abfrage

Frage nach Planetenbewohnern im Star Wars Film "A New Hope"

Geben Sie hier die Bildbeschreibung ein GraphiQL-Abfrage

Beachten Sie, wie die Root-Abfrage film() den id-Parameter des Films "A New Hope" übernimmt und die Projektion von GQL den Titel, die mit dem Film verbundenen Planeten und die residenten Namen der Planeten zurückgibt. Besuchen Sie die Star Wars GraphiQL- Site, um mit Abfragen in GraphQL zu experimentieren.

Schema-Definition

In GraphQL definiert das Schema die Root-Ausführungsabfragen und -mutationen sowie die Typen für Ihre Daten.

Schema-Objekttyp

Der Person hat zwei Felder, eines ist ein Standard-Skalartyp, und das andere stellt eine Beziehung zu einer Liste anderer Personentypen dar, die "Freunde" sind. Die Verknüpfung mit anderen Typen macht GraphQL so mächtig. In der GraphQL-Abfragesprache (GQL) kann der Client nun den Freundesgraph ohne zusätzlichen Code oder erweiterte Abfragen durchsuchen.

type Person {
  id: ID
  name: String
  friends: [Person]
}

Schema-Abfrage

Die person sucht eine einzelne Person anhand ihrer ID. Dies ist der Einstiegspunkt in Ihre Daten für Kunden, die GQL verwenden.

type Query {   
  person(id: ID!): Person
}

Freunde des Freundes von Nick fragen

Da wir nun einen Personentyp und eine Personenwurzelabfrage haben, können wir eine Person suchen und so viele Trennungsgrade wie wir vom Freundesnetzwerk der Person wünschen.

query {
  person(id: 'nick'){
    id
    name
    friends{
      id
      name
      friends{
        id
        name
        friends{
          id
          name
        }
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow