Document a GraphQL API

后端 未结 5 1327
梦谈多话
梦谈多话 2021-02-02 05:02

With REST we can use Swagger, RAML or other technologies to document our API and generate an HTML documentation that our consumers can read without any need of interaction with

相关标签:
5条回答
  • 2021-02-02 05:42

    I found Static page generator for documenting GraphQL Schema. GitHub link.

    HTML export looks like this.

    GitHub GraphQL doc example

    0 讨论(0)
  • 2021-02-02 05:48

    It looks like there is now https://www.npmjs.com/package/graphql-docs

    Dynamically generated documentation explorer for GraphQL schemas. It aims to provide a better overview of a schema than GraphiQL, but without querying features.

    You can also generate a static documentation file based on a schema file or GraphQL endpoint:

    npm install -g graphql-docs
    graphql-docs-gen http://GRAPHQL_ENDPOINT documentation.html
    
    0 讨论(0)
  • 2021-02-02 05:55

    If you're a Sphinx / ReadTheDocs User, you may find https://github.com/hasura/sphinx-graphiql useful.

    0 讨论(0)
  • 2021-02-02 06:02

    To my knowledge there is no tool yet that automatically generates HTML documentation for a GraphQL API, but I've found GraphiQL to be even more useful than any API documentation in HTML that I've seen.

    GraphiQL lets you interactively explore the schema of a GraphQL server and run queries against it at the same time. It has syntax highlighting, autocompletion, and it even tells you when your query is invalid without executing it.

    If you're looking for static documentation, I've found it pretty convenient to read the schema in GraphQL schema language. Thanks to another great feature of GraphQL - schema introspection - you can easily print the schema for any server you have access to. Simply run the introspection query against the server and then print the resulting introspection schema like so (using graphql-js):

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

    The result will look something like this:

    # 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
    }
    
    0 讨论(0)
  • 2021-02-02 06:03

    Actually Graphql is quite self documented with Facebook's built-in Graphiql or the 3rd party tool like Altair because the queries/mutations are listed and return types are also shown there.

    One place I found need doc is the input query parameter which might require specific format. This can be achieved by adding a comment on top of those arguments.

      type Query {
          eventSearch(
            # comma separated location IDs. (eg: '5,12,27')
            locationIds: String,
            # Date Time should be ISO 8601: 'YYYY-DD-MM HH:mm:ss'. (eg: '2018-04-23 00:00:00')
            startDateTime: String!,
            endDateTime: String!): [Event]
      }
    

    It will be like below:

    Graphiql:

    Graphiql

    Altair:

    Altair

    0 讨论(0)
提交回复
热议问题