Szukaj…


Uwagi

GraphQL to język zapytań dla interfejsów API i środowisko wykonawcze do wypełniania tych zapytań przy użyciu istniejących danych. GraphQL zapewnia pełny i zrozumiały opis danych w interfejsie API, daje klientom możliwość zapytania o dokładnie to, czego potrzebują i nic więcej, ułatwia ewolucję interfejsów API w czasie oraz udostępnia zaawansowane narzędzia programistyczne.

Kiedy powinienem używać GraphQL?

GraphQL ma być zewnętrznym interfejsem API HTTP dla dowolnego rodzaju aplikacji, ale jest najbardziej wydajny, gdy dane są znormalizowane za pomocą wysoce połączonych kolekcji | Tabele | Węzły. Język zapytań GraphQL (GQL) został zaprojektowany do wyświetlania połączonych danych w bardzo intuicyjny i elastyczny sposób.

Realizacje

Sam GraphQL jest specyfikacją i jest implementowany przez wiele różnych języków programowania. Są to najpopularniejsze obsługiwane języki

Biblioteki klienta

Uruchamianie zapytań po stronie klienta można wykonać za pomocą dowolnego klienta HTTP, ale biblioteki po stronie klienta mogą być bardzo korzystne.

Narzędzia deweloperskie

Wersje

Wersja Data wydania
v0.5.0 08.04.2016
v0.6.0 2016-05-10
v0.6.1 07.07.2016
v0.6.2 2016-07-21
v0.7.0 26.08.2016
v0.7.1 29.09.2016
v0.7.2 2016-10-10
v0.8.0 2016-11-10
v0.8.1 11.11.2016
v0.8.2 16.11.2016

Instalacja i wdrożenie serwera

GraphQL.js

GraphQL.js to implementacja referencyjna JavaScript dla GraphQL. Możesz zainstalować go za pomocą npm:

  • Zainicjuj npm w swoim projekcie, jeśli jeszcze tego nie zrobiłeś: npm init
  • Zainstaluj GraphQL.js z npm: npm install --save graphql

Przykładowy serwer

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

Alternatywy oprogramowania pośredniego serwera

GraphQL Query Language (GQL)

Zamiast definiować punkty końcowe URL dla każdego zasobu danych, w GraphQL definiujesz pojedynczy punkt końcowy, który akceptuje zapytania GraphQL. W przeciwieństwie do tradycyjnych języków zapytań do baz danych, język zapytań GraphQL (GQL) jest rzutowaniem danych zwracanych przez zapytanie na poziomie głównym. Schemat GraphQL określi model danych oraz zapytania i mutacje na poziomie głównym. GQL wykonuje te zapytania i określa, jakie dane zwrócić.

Zapytanie do wszystkich tytułów filmowych ze schematu Star Wars

Zapytanie danych Star Wars dla allFilms z projekcją tylko tytułu Zapytanie GraphiQL

Pytanie do mieszkańców planety do filmu Gwiezdne wojny „Nowa nadzieja”

wprowadź opis zdjęcia tutaj Zapytanie GraphiQL

Zwróć uwagę, jak kwerenda główna film() przyjmuje parametr id filmu „Nowa nadzieja”, a projekcja z GQL zwraca tytuł, planety połączone z filmem, a następnie nazwy rezydentów planet. Zajrzyj na stronę Star Wars GraphiQL, aby eksperymentować z zapytaniami w GraphQL.

Definicja schematu

W GraphQL schemat definiuje kwerendy wykonania root i mutacje, a także typy danych.

Typ obiektu schematu

Typ Person ma dwa pola, jedno jest standardowym typem skalarnym, a drugie reprezentuje związek z listą innych typów osób, które są „przyjaciółmi”. Łączenie innych typów sprawia, że GraphQL jest tak potężny. Teraz w GraphQL Query Language (GQL) klient może przechodzić przez wykres znajomych bez dodatkowego kodu lub zaawansowanych zapytań.

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

Zapytanie o schemat

Zapytanie o person wyszukuje pojedynczą osobę według jego identyfikatora. Jest to punkt wejścia do danych dla klientów korzystających z GQL.

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

Zapytanie Przyjaciela przyjaciela Nicka

Teraz, gdy mamy typ osoby i kwerendę użytkownika, możemy wyszukać osobę i dowolną liczbę stopni separacji w sieci przyjaciół tej osoby.

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow