@greguintow/apollo-server-micro
TypeScript icon, indicating that this package has built-in type declarations

3.4.8 • Public • Published

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
  1. 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))
});
  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 micro apollo-server-micro 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.start().then(() => {
  return apolloServer.createHandler({ path: '/data' });  // highlight-line
});
  1. package.json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}
  1. 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
  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 });
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),
  );
});
  1. package.json
{
  "main": "index.js",
  "scripts": {
    "start": "micro"
  }
}
  1. 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.

Package Sidebar

Install

npm i @greguintow/apollo-server-micro

Weekly Downloads

1

Version

3.4.8

License

MIT

Unpacked Size

97.2 kB

Total Files

27

Last publish

Collaborators

  • greguintow