2016-09-15 40 views
13

Dzięki REST możemy korzystać z Swagger, RAML lub innych technologii do dokumentowania naszego API i generowania dokumentacji HTML, którą nasi konsumenci mogą przeczytać bez potrzeby interakcji z serwerami.Dokumentacja interfejsu API GraphQL API

Czy istnieje coś podobnego do GraphQL? Czy istnieje sposób na wygenerowanie dokumentacji zasobów i właściwości?

Odpowiedz

12

Wygląda na to, że jest teraz https://www.npmjs.com/package/graphql-docs

Dynamicznie generowany eksplorator dokumentacji dla schematów GraphQL. Ma on na celu zapewnienie lepszego przeglądu schematu niż GraphiQL, ale bez funkcji zapytań.

enter image description here

Można również wygenerować statyczny plik dokumentacji w oparciu o pliku schematu lub GraphQL końcowego:

npm install -g graphql-docs 
graphql-docs-gen http://GRAPHQL_ENDPOINT documentation.html 
3

Według mojej wiedzy nie ma jeszcze narzędzia, które automatycznie generuje dokumentację HTML dla API GraphQL, ale znalazłem GraphiQL, aby było jeszcze bardziej przydatne niż jakakolwiek dokumentacja API w HTML, którą widziałem.

GraphiQL pozwala interaktywnie przeglądać schemat serwera GraphQL i uruchamiać kwerendy przeciwko niemu w tym samym czasie. Ma podświetlanie składni, autouzupełnianie, a nawet informuje cię, kiedy zapytanie jest nieprawidłowe, bez jego wykonywania.

Jeśli szukasz statycznej dokumentacji, odkryłem, że dość wygodne jest odczytywanie schematu w języku schematów GraphQL. Dzięki kolejnej wspaniałej funkcji GraphQL - schema introspection - możesz łatwo wydrukować schemat dla dowolnego serwera, do którego masz dostęp. Wystarczy uruchomić introspection query przeciwko serwera, a następnie wydrukować wynikowy schematu introspekcję jak tak (za pomocą graphql-js):

var graphql = require('graphql'); 
var introspectionSchema = {}; // paste schema here 
console.log(graphql.printSchema(graphql.buildClientSchema(introspectionSchema))); 

wynik będzie wyglądać następująco:

# An author 
type Author { 
    id: ID! 

    # First and last name of the author 
    name: String 
} 

# The schema's root query type 
type Query { 

    # Find an author by name (must match exactly) 
    author(name: String!): Author 
} 
+1

Dzięki Helfer. Ograniczeniem używania interfejsu API jako dokumentacji jest to, że czasami programista potrzebuje go przed uzyskaniem dostępu. Na przykład: Decydując się na zakup jakiejś usługi interfejsu API. Podałeś miłą alternatywę dla tego zastrzeżenia. Dzięki za przydatną odpowiedź. Poczekam trochę i zaznaczę to jako zaakceptowane, jeśli nikt lepiej nie przyjdzie. –