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

    3.4.0 • 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.

    Install

    npm i apollo-server-micro

    DownloadsWeekly Downloads

    41,495

    Version

    3.4.0

    License

    MIT

    Unpacked Size

    30.5 kB

    Total Files

    23

    Last publish

    Collaborators

    • apollo-bot