graphql Tutorial
Erste Schritte mit graphql
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
- GraphQL.js
- Graphql-Rubin
- Graphen (Python)
- Sangria (Scala)
- Graphql-Java
- graphql-clj (Clojure)
- Graphql-Go
- graphql-php
- graphql-dotnet (C # / .Net)
- Absinth (Elixier)
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
- graphiql / ˈɡrafək (ə) l / - Eine interaktive GraphQL-IDE im Browser.
- libgraphqlparser - Ein GraphQL-Parser für Abfragesprache in C ++ mit C- und C ++ - APIs.
- GraphQL Language Service - Eine Schnittstelle zum Erstellen von GraphQL-Sprachdiensten für IDEs (Diagnose, Autovervollständigung usw.).
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
Frage nach Planetenbewohnern im Star Wars Film "A New Hope"
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
}
}
}
}
}