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

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

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 di dati di Star Wars per tutti i film con una proiezione del solo titolo Query GraphiQL

Query for Planet Residents to Star Wars film "Una nuova speranza"

inserisci la descrizione dell'immagine qui Query GraphiQL

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
        }
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow