graphql-sailboat
v1.0.21
Published
GraphQL Sailboat is a simple and efficient Node.js GraphQL HTTP Server, built with TypeScript and Express. Our goal is to increase productivity in the development of amazing GraphQL APIs. **Just take your sailboat and sail!**
Downloads
7
Maintainers
Readme
GraphQL Sailboat :sailboat:
GraphQL Sailboat is a simple and efficient Node.js GraphQL HTTP Server, built with TypeScript and Express. Our goal is to increase productivity in the development of amazing GraphQL APIs. Just take your sailboat and sail!
Installation
yarn add graphql-sailboat
Basic Usage
const { server } = require('graphql-sailboat')
const schema = `[Your Schema]`
const resolvers = {
// Your Resolvers
}
server(schema, resolvers, {
path: '/sample', // optional, '/graphql' by default
graphiql: false, // optional, true by default
port: 8080 // optional, 7000 by default
})
Sample with values
const { server } = require('graphql-sailboat')
const data = [{
id: 1,
tile: "The Shawshank Redemption",
year: 1994,
duration: 142,
genre: "Drama",
imdbRate: 9.3,
director: "Frank Darabont"
}, {
id: 2,
title: "The Godfather",
year: 1972,
duration: 175,
genre: "Drama, Crime",
imdbRate: 9.2,
director: "Francis Ford Coppola"
}, {
id: 3,
title: "The Dark Knight",
year: 2008,
duration: 152,
genre: "Action, Crime, Drama",
imdbRate: 9.0
}];
const schema = `
type Movie {
id: ID!,
title: String!,
year: Int!,
duration: Int!,
genre: String!,
imdbRate: Float!,
director: String
}
type Query {
getMovies: [Movie],
bestMovie: Movie,
searchMovie(_id: ID): Movie
}
`;
const resolvers = {
getMovies: () => data,
bestMovie: () => {
let theBest;
let rate;
data.map(e => {
if (!rate) {
rate = e.imdbRate;
theBest = e;
} else if (e.imdbRate > rate) {
rate = e.imdbRate;
theBest = e;
}
});
return theBest;
},
searchMovie: args => {
const id = args;
const movie = data.filter(e => e.id === id);
return movie[0];
}
};
server(schema, resolvers, {
port: 8000
});
Express middlewares
You can acess express object and create custom middlewares importing app
, like this:
const { server, app } = require('graphql-sailboat')
// example of basic auth middleware
app.use((req, res, next) => {
const auth = { login: 'user', password: 'pass' };
const b64auth = (req.headers.authorization || '').split(' ')[1] || '';
const [login, password] = Buffer.from(b64auth, 'base64').toString().split(':');
if (login && password && login === auth.login && password === auth.password) {
return next();
}
res.set('WWW-Authenticate', 'Basic realm="401"');
return res.status(401).send('Authentication required.');
})
// ...
// ...
// ...
server(schema, resolvers, {
port: 8000
});