apollo-server-micro

Production-ready Node.js GraphQL server for Micro

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
apollo-server-micro
13,638723.13.04 months ago7 years agoMinified + gzip package size for apollo-server-micro in KB

Readme

npm version Build Status Join the community forum Read CHANGELOG
This is the Micro integration for the Apollo community GraphQL Server. Read the docs. Read the CHANGELOG.
A full example of how to use apollo-server-micro can be found in the docs.

CORS Example

This example demonstrates how to setup a simple Micro + CORS + GraphQL microservice, using micro-cors:
1) Package installation.
npm install micro micro-cors apollo-server-micro graphql

2) index.js
const cors = require('micro-cors')(); // highlight-line
const { ApolloServer, gql } = require('apollo-server-micro');
const { send } = require('micro');

const typeDefs = gql`
  type Query {
    sayHello: String
  }
`;

const resolvers = {
  Query: {
    sayHello(parent, args, context) {
      return 'Hello World!';
    },
  },
};

const apolloServer = new ApolloServer({ typeDefs, resolvers });
module.exports = apolloServer.start().then(() => {
  const handler = apolloServer.createHandler();
  return cors((req, res) => req.method === 'OPTIONS' ? send(res, 200, 'ok') : handler(req, res))
});

3) package.json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}

4) After an npm start, access http://localhost:3000/graphql in your browser to run queries using graphql-playground, or send GraphQL requests directly to the same URL.

Custom GraphQL Path Example

This example shows how to setup a simple Micro + GraphQL microservice, that uses a custom GraphQL endpoint path:
1) Package installation.
npm install micro apollo-server-micro graphql

2) index.js
const { ApolloServer, gql } = require('apollo-server-micro');

const typeDefs = gql`
  type Query {
    sayHello: String
  }
`;

const resolvers = {
  Query: {
    sayHello(parent, args, context) {
      return 'Hello World!';
    },
  },
};

const apolloServer = new ApolloServer({ typeDefs, resolvers });
module.exports = apolloServer.start().then(() => {
  return apolloServer.createHandler({ path: '/data' });  // highlight-line
});

3) package.json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}

4) After an npm start, access http://localhost:3000/data in your browser to run queries using graphql-playground, or send GraphQL requests directly to the same URL.

Fully Custom Routing Example

This example demonstrates how to setup a simple Micro + GraphQL microservice, that uses micro-router for fully custom routing:
1) Package installation.
npm install micro microrouter apollo-server-micro graphql

2) index.js
```js{1,21-26} const { router, get, post, options } = require('microrouter'); const { ApolloServer, gql } = require('apollo-server-micro');
const typeDefs = gql` type Query {
sayHello: String
} `;
const resolvers = { Query: {
sayHello(parent, args, context) {
  return 'Hello World!';
},
}, };
const apolloServer = new ApolloServer({ typeDefs, resolvers }); module.exports = apolloServer.start().then(() => { const graphqlPath = '/data'; const graphqlHandler = apolloServer.createHandler({ path: graphqlPath }); return router(
get('/', (req, res) => 'Welcome!'),
post(graphqlPath, graphqlHandler),
get(graphqlPath, graphqlHandler),
); });
3) `package.json`

```json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}

4) After an npm start, access http://localhost:3000/data in your browser to run queries using graphql-playground, or send GraphQL requests directly to the same URL.