#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
5 min read
Question 55 of 62hard

How 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 graphql
code.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
    }
  }
}