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
:
- Package installation.
npm install micro micro-cors apollo-server-micro graphql
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))
});
package.json
{
"main": "index.js",
"scripts": {
"start": "micro"
}
}
- After an
npm start
, accesshttp://localhost:3000/graphql
in your browser to run queries usinggraphql-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:
- Package installation.
npm install micro apollo-server-micro graphql
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
});
package.json
{
"main": "index.js",
"scripts": {
"start": "micro"
}
}
- After an
npm start
, accesshttp://localhost:3000/data
in your browser to run queries usinggraphql-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:
- Package installation.
npm install micro microrouter apollo-server-micro graphql
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),
);
});
package.json
{
"main": "index.js",
"scripts": {
"start": "micro"
}
}
- After an
npm start
, accesshttp://localhost:3000/data
in your browser to run queries usinggraphql-playground
, or send GraphQL requests directly to the same URL.