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.
- 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(() => apolloServer.createHandler());
package.json
{
"main": "index.js",
"scripts": {
"start": "micro"
}
}
- 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
:
- Package installation.
npm install micro micro-cors apollo-server-micro graphql
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 = apolloServer.start().then(() => {
const handler = apolloServer.createHandler();
return cors((req, res) => req.method === 'OPTIONS' ? res.end() : handler(req, res))
});
package.json
{
"main": "index.js",
"scripts": {
"start": "micro"
}
}
- 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:
- 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' });
});
package.json
{
"main": "index.js",
"scripts": {
"start": "micro"
}
}
- 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:
- 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
, access http://localhost:3000/data
in your
browser to run queries using
graphql-playground
,
or send GraphQL requests directly to the same URL.