apollo-server-micro-pluto
v3.0.2-pluto
Published
Production-ready Node.js GraphQL server for Micro(for xsky pluto project)
Downloads
15
Maintainers
Readme
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 [email protected] 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
, accesshttp://localhost:3000/graphql
in your browser to run queries usinggraphql-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 [email protected] graphql
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
});
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 [email protected] 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 [email protected] 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.