apollo-server/packages/apollo-server-micro
Jamie Hodge bcabbb7785 set content type to text/html for playground (#2026)
BUGFIX: the playground page is currently being served without a content type

<!--
  Thanks for filing a pull request on GraphQL Server!

  Please look at the following checklist to ensure that your PR
  can be accepted quickly:
-->

TODO:

* [x] Update CHANGELOG.md with your change (include reference to issue & this PR)
* [ ] Make sure all of the significant new logic is covered by tests
* [x] Rebase your changes on master so that they can be merged easily
* [x] Make sure all tests and linter rules pass
2018-11-30 18:58:42 +02:00
..
src set content type to text/html for playground (#2026) 2018-11-30 18:58:42 +02:00
.npmignore Apollo Server 2 Micro integration (#1279) 2018-07-05 11:40:15 -07:00
jest.config.js Replace {} with Object.create(null) in jest.config.js 2018-10-12 13:00:13 +02:00
package.json Publish 2018-11-29 13:45:34 +02:00
README.md Remove invalid HTTP method from apollo-server-micro example (#2045) 2018-11-29 17:23:19 +02:00
tsconfig.json Remove test dependencies from non-test tsconfig.json files 2018-10-11 12:58:03 +02:00

title description
Micro Setting up Apollo Server with Micro

npm version Build Status Coverage Status Get on Slack

This is the Micro integration for the Apollo community GraphQL Server. Read the docs. Read the CHANGELOG.

Basic GraphQL Microservice

This example demonstrates how to setup a simple microservice, using Micro, that handles incoming GraphQL requests via the default /graphql endpoint.

  1. Package installation.
npm install --save micro apollo-server-micro@rc graphql
  1. 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.createHandler();
  1. package.json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}
  1. 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.

CORS Example

This example demonstrates how to setup a simple Micro + CORS + GraphQL microservice, using micro-cors:

  1. Package installation.
npm install --save micro micro-cors apollo-server-micro@rc graphql
  1. index.js
const cors = require('micro-cors')();
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 = cors(apolloServer.createHandler());
  1. package.json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}
  1. 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 --save micro apollo-server-micro@rc graphql
  1. 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.createHandler({ path: '/data' });
  1. package.json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}
  1. 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.

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 --save micro microrouter apollo-server-micro@rc graphql
  1. index.js
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 });
const graphqlPath = '/data';
const graphqlHandler = apolloServer.createHandler({ path: graphqlPath });
module.exports = router(
  get('/', (req, res) => 'Welcome!'),
  post(graphqlPath, graphqlHandler),
  get(graphqlPath, graphqlHandler),
);
  1. package.json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}
  1. 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.