graphql Tutorial
Iniziare con graphql
Ricerca…
Osservazioni
GraphQL è un linguaggio di query per le API e un runtime per soddisfare tali query con i dati esistenti. GraphQL fornisce una descrizione completa e comprensibile dei dati nella tua API, offre ai clienti il potere di chiedere esattamente ciò di cui hanno bisogno e nient'altro, semplifica l'evoluzione delle API nel tempo e abilita potenti strumenti di sviluppo.
Quando dovrei usare GraphQL?
GraphQL è destinato ad essere l'API HTTP rivolta verso l'esterno per qualsiasi tipo di applicazione, ma è più potente quando i dati sono normalizzati con Collections | Tabelle | Nodi altamente interconnessi. Il GraphQL Query Language (GQL) è progettato per proiettare i dati interconnessi in modo molto intuitivo e flessibile.
implementazioni
GraphQL stessa è una Spec ed è implementato da una serie di diversi linguaggi di programmazione. Queste sono le lingue supportate più popolari
- GraphQL.js
- graphql-ruby
- Graphene (Python)
- Sangria (Scala)
- graphql-java
- graphql-clj (Clojure)
- graphql-go
- graphql-php
- graphql-dotnet (C # / .Net)
- assenzio (elisir)
Librerie client
L'esecuzione di query dal lato client può essere eseguita con qualsiasi client HTTP, ma le librerie secondarie client possono essere molto utili.
Dev Tools
- graphiql / ɡrafək (ə) l / - Un IDE grafico interattivo nel browser.
- libgraphqlparser - Un parser per linguaggio di query GraphQL in C ++ con API C e C ++.
- GraphQL Language Service : un'interfaccia per la creazione di servizi di linguaggio GraphQL per IDE (diagnostica, completamento automatico, ecc.).
Versioni
Versione | Data di rilascio |
---|---|
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 |
Installazione e implementazione del server
GraphQL.js
GraphQL.js è un'implementazione di riferimento JavaScript per GraphQL. Puoi installarlo via npm:
- Inizializza npm nel tuo progetto se non lo hai già fatto:
npm init
- Installa GraphQL.js da npm:
npm install --save graphql
Server di esempio
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 Alternatives
GraphQL Query Language (GQL)
Anziché definire endpoint URL per ciascuna risorsa dati, in GraphQL è possibile definire un singolo endpoint che accetta query GraphQL. A differenza dei linguaggi di query di database tradizionali, GraphQL Query Language (GQL) è una proiezione di dati restituiti da una query di livello principale. Lo schema GraphQL definirà il modello di dati e le query e le mutazioni a livello di radice. GQL esegue quelle query e definisce quali dati restituire.
Domanda per tutti i titoli di film di Star Wars Schema
Query for Planet Residents to Star Wars film "Una nuova speranza"
Notate come la query di root film()
prende il parametro id del film "A New Hope" e la proiezione di GQL restituisce il titolo, i pianeti collegati al film e quindi i nomi dei pianeti residenti. Dai un'occhiata al sito di Star Wars GraphiQL per sperimentare con le query in GraphQL.
Definizione dello schema
In GraphQL lo schema definisce le query di esecuzione di root e le mutazioni , nonché i tipi per i dati.
Tipo di oggetto dello schema
Il tipo Person
ha due campi, uno è un tipo scalare standard e l'altro rappresenta una relazione con un elenco di altri tipi di persone che sono "amici". Il collegamento di altri tipi è ciò che rende GraphQL così potente. Ora in GraphQL Query Language (GQL), il client può attraversare il grafico degli amici senza alcun codice aggiuntivo o query avanzate.
type Person {
id: ID
name: String
friends: [Person]
}
Schema Query
La query della person
cerca una singola persona per il suo id. Questo è il punto di accesso ai dati per i client che utilizzano GQL.
type Query {
person(id: ID!): Person
}
Amici di Query Nick's Friend's Friend
Ora che abbiamo un tipo Persona e una query radice persona possiamo cercare una persona e tutti i gradi di separazione che vogliamo della rete di amici della persona.
query {
person(id: 'nick'){
id
name
friends{
id
name
friends{
id
name
friends{
id
name
}
}
}
}
}