0Pricing
Node.js Backend Development Bootcamp · Pelajaran

Membangun Server GraphQL dengan Apollo

Terapkan API GraphQL di Node.js menggunakan Apollo Server, hubungkan ke sumber data, dan tentukan resolver.

Membangun Server GraphQL dengan Apollo adalah pelajaran Node.js Backend Development Bootcamp gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Node.js Backend Development Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Node.js Backend Development Bootcamp mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Meet Apollo Server

Welcome to building a GraphQL server! We'll use Apollo Server, a popular open-source library that helps you implement a production-ready GraphQL API in Node.js.

  • It's easy to set up.
  • It integrates with many Node.js frameworks like Express.
  • It provides powerful tools like GraphQL Playground for testing.

Apollo Server handles the heavy lifting, letting you focus on your data.

Membangun Server GraphQL dengan Apollo — ilustrasi 1

Project Setup for Apollo

Let's get started by setting up our project. Open your terminal and run these commands to create a new Node.js project and install the required libraries:

  • apollo-server: The core library for building our GraphQL server.
  • graphql: The JavaScript implementation of the GraphQL specification.

Here's how to do it:

mkdir my-graphql-api
cd my-graphql-api
npm init -y
npm install apollo-server graphql

Once installed, you're ready to write some code!

Schema & Resolvers: The Core

A GraphQL server has two main parts:

  • Schema (Type Definitions): This defines the shape of your data and the operations clients can perform (queries, mutations). Think of it as the contract between client and server.
  • Resolvers: These are functions that tell GraphQL how to fetch the data for each type and field defined in your schema. They are the "backend logic" for your API.

Together, they define your API's capabilities and how it interacts with your data.

Crafting Your GraphQL Schema

We define the schema using a special template literal tag called gql (from apollo-server). This allows us to write GraphQL Schema Definition Language (SDL).

The most important type is Query, which defines all the ways clients can read data from your API. Let's define a simple Query that returns a "hello" message.

const { gql } = require('apollo-server');

const typeDefs = gql`
  type Query {
    hello: String
  }
`;

console.log('Your schema is ready!');

Building Your Resolvers

Now that we have our schema, we need to tell GraphQL how to actually get the data for the hello field. This is where resolvers come in.

Resolvers are functions that match the fields in your schema. When a client queries hello, the corresponding resolver function will be executed.

const resolvers = {
  Query: {
    hello: () => 'Hello from your GraphQL API!',
  },
};

console.log('Resolvers are defined!');

Launching Your First Server

Let's put it all together! We'll combine the typeDefs and resolvers with ApolloServer to create a complete, runnable GraphQL server.

Create a file named index.js and add the following code. Then, run it with node index.js.

const { ApolloServer, gql } = require('apollo-server');

// 1. Define your schema (type definitions)
const typeDefs = gql`
  type Query {
    hello: String
  }
`;

// 2. Define your resolvers (how to fetch data)
const resolvers = {
  Query: {
    hello: () => 'Hello from your GraphQL API!',
  },
};

// 3. Create an Apollo Server instance
const server = new ApolloServer({ typeDefs, resolvers });

// 4. Start the server
server.listen({ port: 4000 }).then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
  console.log('Try opening your browser to test it!');
});

Defining Custom Data Types

A simple "hello" isn't very exciting. Let's define a custom type, like Book, with its own fields. This shows how you structure more complex data.

Update your typeDefs to include the Book type and a books query that returns a list of them.

const { gql } = require('apollo-server');

const typeDefs = gql`
  type Book {
    title: String
    author: String
  }

  type Query {
    hello: String
    books: [Book]
  }
`;

console.log('Schema updated with Book type!');

Resolving Custom Types

To make the books query work, we need to update our resolvers. For now, we'll use an in-memory array of objects to simulate a database. In real applications, resolvers connect to databases or other APIs.

Let's update the resolvers to provide data for our books query.

const books = [
  {
    title: 'The Great Gatsby',
    author: 'F. Scott Fitzgerald',
  },
  {
    title: 'To Kill a Mockingbird',
    author: 'Harper Lee',
  },
];

const resolvers = {
  Query: {
    hello: () => 'Hello from your GraphQL API!',
    books: () => books,
  },
};

console.log('Resolvers updated for books!');

Full API with Books

Here's the complete index.js file with our new Book type and its resolver. Run this with node index.js.

Once running, open the URL in your browser (e.g., http://localhost:4000). You'll see the GraphQL Playground, where you can test queries like:

query {
  books {
    title
    author
  }
}

const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql`
  type Book {
    title: String
    author: String
  }

  type Query {
    hello: String
    books: [Book]
  }
`;

const books = [
  {
    title: 'The Great Gatsby',
    author: 'F. Scott Fitzgerald',
  },
  {
    title: 'To Kill a Mockingbird',
    author: 'Harper Lee',
  },
];

const resolvers = {
  Query: {
    hello: () => 'Hello from your GraphQL API!',
    books: () => books,
  },
};

const server = new ApolloServer({ typeDefs, resolvers });

server.listen({ port: 4000 }).then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
  console.log('Explore your API in GraphQL Playground!');
});

Schema vs. Resolvers Check

You've learned about the two fundamental parts of a GraphQL server: the schema (type definitions) and the resolvers.

Which of the following best describes the primary role of GraphQL Resolvers in an Apollo Server?

Apollo Server: Quick Recap

Great job! You've successfully built your first GraphQL server with Apollo Server.

  • We installed apollo-server and graphql.
  • We defined our API's structure using Type Definitions (typeDefs) written in GraphQL SDL.
  • We implemented Resolvers to specify how to fetch data for the fields in our schema, using mock data.
  • We launched our server using ApolloServer and explored it with GraphQL Playground.

This is the foundation for building powerful and flexible GraphQL APIs. Next, you can explore mutations, arguments, and connecting to real databases!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membangun Server GraphQL dengan Apollo” gratis?

Ya — teks lengkap “Membangun Server GraphQL dengan Apollo” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Node.js Backend Development Bootcamp, upgrade ke CoddyKit PRO. Kursus Node.js Backend Development Bootcamp mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Membangun Server GraphQL dengan Apollo”?

Terapkan API GraphQL di Node.js menggunakan Apollo Server, hubungkan ke sumber data, dan tentukan resolver. Kamu berlatih Node.js Backend Development Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Node.js Backend Development Bootcamp?

Tidak diperlukan pengalaman sebelumnya. Node.js Backend Development Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Membangun Server GraphQL dengan Apollo” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Node.js Backend Development Bootcamp ini?

Ya. Setiap pelajaran Node.js Backend Development Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pengantar Serverless dengan Node.js
  2. Prinsip Desain API GraphQL
  3. Membangun Server GraphQL dengan Apollo
  4. Subscription GraphQL untuk Data Real-Time
← Kembali ke Node.js Backend Development Bootcamp