Nanoseconds Produce Minutes
    Wondering what’s next for npm?Check out our public roadmap! »

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

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

    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 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(() => 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 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 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(); // highlight-line
      return cors((req, res) => req.method === 'OPTIONS' ? res.end() : handler(req, res)) // highlight-line
    });
    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

    35,340

    Version

    2.25.1

    License

    MIT

    Unpacked Size

    42.9 kB

    Total Files

    26

    Last publish

    Collaborators

    • avatar