Check out my books on Amazon at https://www.amazon.com/John-Au-Yeung/e/B08FT5NT62
Subscribe to my email list now at http://jauyeung.net/subscribe/
Apollo Server is available as a Node package. We can use it to create a server to accept GraphQL requests.
In this article, we’ll look at how to use it with Express to create our own GraphQL server.
Get started with Apollo Server
We get started by installing the express-apollo-server
.
To install it with Express, we run:
npm install apollo-server-express express
Then create an index.js
file and add:
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const books = [
{
title: 'JavaScript for Dummies',
author: 'Jane Smith',
},
{
title: 'JavaScript Book',
author: 'Michael Smith',
},
];
const typeDefs = gql`
type Book {
title: String
author: String
} type Query {
books: [Book]
}
`;
const resolvers = {
Query: {
books: () => books,
},
};
const app = express();
const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app });
app.listen(3000, () => console.log('server started'));
In the code above, we created our basic Apollo GraphQL server by creating our data in the books
array.
Then we used the gql
tag with our schema definition string passed in to create our schema and assigned it to the typedefs
constant.
The query type is always required so we can query data from our server. The server won’t run without it.
We created a Book
type with fields title
and author
. Then we created a books
query to return an array of Book
s.
Next, we created our resolvers
so that we can query the data we created. We just created a books
resolve to return the books
array.
Finally, we have the following initialization code to load the server:
const app = express();
const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app });app.listen(3000, () => console.log('server started'));
Then when we go to /graphql
in our browser, we see a UI to test our query.
To run the server, we run:
node index.js
We can test our server by running:
{
books {
title
author
}
}
Then when we click the arrow button in the middle, we should get:
{
"data": {
"books": [
{
"title": "JavaScript for Dummies",
"author": "Jane Smith"
},
{
"title": "JavaScript Book",
"author": "Michael Smith"
}
]
}
}
as the response.
Conclusion
We created a simple Apollo GraphQL server with Express by installing the express
and express-apollo-server
packages.
Then we created the type definition by passing a string with the type definitions into the gql
tag.
Once we did that, we created a resolver to return the response which is mapped from the query.
Then we run the server to make the query and return the data. We can test that by going to the /graphql
page that comes with the Express Apollo server.