5 min read
•Question 55 of 62hardHow to build a GraphQL API in Node.js?
Creating GraphQL APIs with Apollo Server.
What You'll Learn
- GraphQL basics
- Apollo Server setup
- Queries and mutations
Setup
$ terminalBash
npm install @apollo/server graphqlcode.jsJavaScript
const { ApolloServer } = require('@apollo/server');
const { startStandaloneServer } = require('@apollo/server/standalone');
// Schema
const typeDefs = `
type User {
id: ID!
name: String!
email: String!
posts: [Post!]!
}
type Post {
id: ID!
title: String!
author: User!
}
type Query {
users: [User!]!
user(id: ID!): User
posts: [Post!]!
}
type Mutation {
createUser(name: String!, email: String!): User!
createPost(title: String!, authorId: ID!): Post!
}
`;
// Resolvers
const resolvers = {
Query: {
users: () => users,
user: (_, { id }) => users.find(u => u.id === id),
posts: () => posts
},
Mutation: {
createUser: (_, { name, email }) => {
const user = { id: String(users.length + 1), name, email };
users.push(user);
return user;
}
},
User: {
posts: (user) => posts.filter(p => p.authorId === user.id)
},
Post: {
author: (post) => users.find(u => u.id === post.authorId)
}
};
// Server
const server = new ApolloServer({ typeDefs, resolvers });
startStandaloneServer(server, { listen: { port: 4000 } })
.then(({ url }) => console.log(`Server ready at ${url}`));Query Example
code.txtGRAPHQL
query {
users {
id
name
posts {
title
}
}
}