flexzuu / swagger-to-graphql

Swagger to GraphQL API adapter

Home Page:https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Swagger2GraphQL

Swagger2GraphQL converts your existing Swagger schema to GraphQL types where resolvers perform HTTP calls to certain real endpoints. It allows you to move your API to GraphQL with nearly zero afford and maintain both: REST and GraphQL APIs.

Why?

Usage

Basic server

const express = require('express');
const app = express();
const graphqlHTTP = require('express-graphql');
const graphQLSchema = require('swagger-to-graphql');

graphQLSchema('./petstore.json').then(schema => {
  app.use('/graphql', graphqlHTTP(() => {
    return {
      schema,
      context: {
        GQLProxyBaseUrl: API_BASE_URL
      },
      graphiql: true
    };
  }));

  app.listen(3009, 'localhost', () => {
    console.info(`API is here localhost:3009/graphql`);
  });
}).catch(e => {
  throw e;
});

CLI convertion

npm i -g swagger-to-graphql
swagger-to-graphql --swagger=/path/to/swagger_schema.json > ./types.graphql

Authorization

Basic Auth example:

 ...
  context: {
    GQLProxyBaseUrl: API_BASE_URL,
    headers: {
      Authorization: 'Basic YWRkOmJhc2ljQXV0aA==',
      "X-Custom": 'customValue'
    }
    BearerToken: req.get('authorization')
  },
 ...

Bearer Token example:

 ...
  context: {
    GQLProxyBaseUrl: API_BASE_URL,
    headers: {
      Authorization: req.get('authorization'),
      "X-Custom": 'customValue'
    }
  },
 ...

All context options

About

Swagger to GraphQL API adapter

https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184


Languages

Language:JavaScript 100.0%