Apidog

Platform Pengembangan API Kolaboratif All-in-one

Desain API

Dokumentasi API

Debug API

Mocking API

Pengujian Otomatis

GraphQL dengan Node.js dan Express: Panduan Komprehensif

Pelajari cara membuat API hebat dgn GraphQL, Node.js, & Express. Panduan lengkap ini mencakup pengaturan, implementasi, & optimasi. Cocok utk pengembang yg ingin membangun API efisien & terukur.

Ardianto Nugroho

Ardianto Nugroho

Updated on April 15, 2025

Apakah Anda siap untuk merevolusi cara Anda membangun API? Jika Anda sudah lama berkecimpung di dunia pengembangan, Anda mungkin pernah mendengar tentang GraphQL, Node.js, dan Express. Bersama-sama, teknologi ini menciptakan perangkat yang ampuh untuk membangun API modern dan efisien. Hari ini, kita akan menyelami dunia GraphQL dengan Node.js dan Express untuk membantu Anda memahami dan menerapkan kombinasi ini dalam proyek Anda.

Namun pertama-tama, izinkan saya memperkenalkan Anda pada alat yang akan membuat pengembangan API Anda semakin lancar: Apidog. Apidog adalah alat pengujian dan manajemen API gratis yang terintegrasi dengan mulus dengan GraphQL, Node.js, dan Express. Jika Anda ingin menyederhanakan proses pengembangan API Anda, unduh Apidog secara gratis dan lihat perbedaannya!

Pengantar GraphQL, Node.js, dan Express

Apa itu GraphQL?

GraphQL adalah bahasa kueri untuk API Anda, dan runtime sisi server untuk menjalankan kueri dengan menggunakan sistem tipe yang Anda tentukan untuk data Anda. Dikembangkan oleh Facebook, ini menyediakan alternatif yang lebih efisien, kuat, dan fleksibel untuk REST. Dengan GraphQL, Anda dapat meminta data yang Anda butuhkan, menghindari pengambilan data berlebihan atau kekurangan.

GRaphQL Official Website

Apa itu Node.js?

Node.js adalah runtime JavaScript yang dibangun di atas mesin V8 JavaScript milik Chrome. Ini memungkinkan pengembang untuk membangun aplikasi jaringan yang dapat diskalakan menggunakan JavaScript di sisi server. Node.js dikenal karena model I/O non-pemblokiran berbasis peristiwa yang membuatnya ringan dan efisien.

NodeJs official website

Apa itu Express?

Express adalah kerangka kerja aplikasi web Node.js yang minimal dan fleksibel yang menyediakan serangkaian fitur yang kuat untuk mengembangkan aplikasi web dan seluler. Ini memfasilitasi pengembangan cepat aplikasi web berbasis Node dan sering digunakan sebagai tulang punggung untuk membangun API RESTful.

Express official Website

Menyiapkan Lingkungan Pengembangan Anda

Sebelum kita mulai membangun API kita, mari siapkan lingkungan pengembangan kita. Inilah yang Anda butuhkan:

  • Node.js dan npm (Node Package Manager) terinstal
  • Editor kode (seperti Visual Studio Code)
  • Terminal atau command prompt

Menginstal Node.js dan npm

Unduh dan instal Node.js dari situs web Node.js resmi. npm sudah termasuk dalam Node.js, jadi Anda tidak perlu menginstalnya secara terpisah.

Menginisialisasi Proyek Node.js Baru

Buka terminal Anda dan buat direktori baru untuk proyek Anda. Navigasikan ke direktori proyek Anda dan jalankan perintah berikut untuk menginisialisasi proyek Node.js baru:

npm init -y

Perintah ini akan membuat file package.json di direktori proyek Anda.

Membuat Server Express Dasar

Sekarang proyek kita sudah diatur, mari buat server Express dasar.

Menginstal Express

Jalankan perintah berikut untuk menginstal Express:

npm install express

Membuat Server

Buat file baru bernama server.js dan tambahkan kode berikut:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 4000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Kode ini menyiapkan server Express dasar yang mendengarkan di port 4000 dan merespons dengan "Hello World!" ketika diakses di URL root.

Untuk memulai server, jalankan:

node server.js

Kunjungi http://localhost:4000 di browser Anda untuk melihat pesan "Hello World!".

Mengintegrasikan GraphQL dengan Express

Dengan server dasar kita yang sudah berjalan, sekarang saatnya untuk mengintegrasikan GraphQL.

Menginstal GraphQL dan Apollo Server

Apollo Server adalah server GraphQL sumber terbuka yang dikelola komunitas yang kompatibel dengan klien GraphQL mana pun. Kita akan menggunakannya untuk menangani permintaan GraphQL kita.

Instal Apollo Server dan GraphQL:

npm install apollo-server-express graphql

Menyiapkan Apollo Server

Modifikasi server.js untuk menyiapkan Apollo Server dengan Express:

const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const app = express();
const PORT = process.env.PORT || 4000;

// Define the schema
const typeDefs = gql`
  type Query {
    hello: String
  }
`;

// Define the resolvers
const resolvers = {
  Query: {
    hello: () => 'Hello World!',
  },
};

// Create an instance of ApolloServer
const server = new ApolloServer({ typeDefs, resolvers });

// Apply middleware to connect ApolloServer with Express
server.applyMiddleware({ app });

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}${server.graphqlPath}`);
});

Kode ini menyiapkan Apollo Server dasar dengan satu kueri hello yang mengembalikan "Hello World!".

Mendefinisikan Skema dan Resolver GraphQL

Sekarang kita memiliki server GraphQL dasar yang berjalan, mari selami lebih dalam skema dan resolver.

Apa itu Skema?

Skema GraphQL mendefinisikan tipe dan hubungan dalam API Anda. Ini menjelaskan kueri apa yang dapat dibuat dan data apa yang dapat diambil.

Apa itu Resolver?

Resolver adalah fungsi yang menangani pengambilan data untuk bidang tertentu dalam skema Anda. Mereka memberi tahu GraphQL cara mendapatkan data untuk setiap kueri.

Mendefinisikan Skema yang Lebih Kompleks

Perluas typeDefs dan resolvers Anda di server.js:

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

  type Query {
    books: [Book]
  }
`;

const books = [
  {
    title: 'The Awakening',
    author: 'Kate Chopin',
  },
  {
    title: 'City of Glass',
    author: 'Paul Auster',
  },
];

const resolvers = {
  Query: {
    books: () => books,
  },
};

Skema ini mendefinisikan tipe Book dan kueri books yang mengembalikan daftar buku.

Menghubungkan ke Database

Untuk aplikasi dunia nyata, Anda perlu menghubungkan API Anda ke database. Mari gunakan MongoDB untuk contoh ini.

Menyiapkan MongoDB

Daftar untuk akun MongoDB Atlas gratis atau siapkan instance MongoDB lokal. Kemudian, instal mongoose untuk berinteraksi dengan MongoDB dari Node.js:

npm install mongoose

Menghubungkan ke MongoDB

Modifikasi server.js untuk terhubung ke MongoDB:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/graphql', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', () => {
  console.log('Connected to MongoDB');
});

// Define a Mongoose schema and model
const bookSchema = new mongoose.Schema({
  title: String,
  author: String,
});

const Book = mongoose.model('Book', bookSchema);

// Modify the resolver to fetch data from MongoDB
const resolvers = {
  Query: {
    books: async () => await Book.find(),
  },
};

Sekarang, kueri books mengambil data dari MongoDB.

Mengoptimalkan API GraphQL Anda

Untuk memastikan API GraphQL Anda efisien dan berkinerja tinggi, pertimbangkan teknik optimasi berikut:

DataLoader untuk Pemuatan Batch yang Efisien

DataLoader adalah utilitas untuk membuat batch dan menyimpan cache pengambilan data. Ini membantu mengurangi jumlah permintaan database.

Instal DataLoader:

npm install dataloader

Gunakan DataLoader di resolver Anda:

const DataLoader = require('dataloader');

const bookLoader = new DataLoader(async (keys) => {
  const books = await Book.find({ _id: { $in: keys } });
  return keys.map((key) => books.find((book) => book.id === key));
});

const resolvers = {
  Query: {
    books: async () => await bookLoader.loadAll(),
  },
};

Caching

Terapkan strategi caching untuk menghindari pengambilan data yang berlebihan. Anda dapat menggunakan cache dalam memori seperti Redis untuk menyimpan data yang sering diminta.

Pagination

Untuk kueri yang mengembalikan dataset besar, terapkan pagination untuk mengambil data dalam potongan. Gunakan parameter limit dan skip untuk memaginasi hasil.

Menguji API Anda dengan Apidog

Menguji API Anda sangat penting untuk memastikan API berfungsi seperti yang diharapkan. Apidog menyederhanakan proses ini dengan antarmuka intuitif dan fitur-fitur canggihnya.

button

Langkah 1: Buka Apidog dan buat permintaan baru.

Apidog

Langkah 2: Temukan atau masukkan secara manual detail API untuk permintaan POST yang ingin Anda buat.

Apidog

Langkah 3: Isi parameter yang diperlukan dan data apa pun yang ingin Anda sertakan dalam badan permintaan.

Apidog

Dengan mengintegrasikan Apidog ke dalam alur kerja Anda, Anda dapat menghemat waktu dan menghindari kesalahan umum dalam pengembangan API. Selain itu, gratis untuk diunduh dan digunakan!

Apidog dengan GraphQL Anda

Setelah Anda menginstal Apidog, Anda dapat mengimpor skema GraphQL Anda untuk mengelola dan menguji API Anda dengan lebih efisien. Navigasikan ke bagian impor di Apidog dan unggah file schema.graphqls Anda.

create a new GraphQL request

​Masukkan kueri Anda di kotak Query pada tab "Run". Anda juga dapat mengklik tombol Fetch Schema manual di kotak input untuk mengaktifkan fitur "penyelesaian kode" untuk ekspresi Query, membantu dalam memasukkan pernyataan Query.

Requesting GraphQL

Dengan skema Anda yang diimpor, Anda dapat menggunakan Apidog untuk menguji kueri dan mutasi Anda, menghasilkan dokumentasi, dan bahkan mengejek respons. Ini akan membantu Anda memastikan API Anda berfungsi seperti yang diharapkan dan memberikan panduan komprehensif untuk pengguna API Anda.

Requesting GraphQL

Gunakan fitur pengujian otomatis Apidog untuk menjalankan kasus pengujian Anda sesuai jadwal. Ini membantu menangkap masalah apa pun sejak dini dan memastikan API Anda tetap andal.

Praktik Terbaik untuk Membangun API

Membangun API yang kuat dan dapat diskalakan membutuhkan mengikuti praktik terbaik. Berikut adalah beberapa tips utama:

Gunakan Pesan Kesalahan Deskriptif

Pastikan API Anda mengembalikan pesan kesalahan yang bermakna untuk membantu klien memahami apa yang salah.

Amankan API Anda

Terapkan mekanisme otentikasi dan otorisasi untuk melindungi API Anda dari akses yang tidak sah.

Dokumentasikan API Anda

Berikan dokumentasi yang jelas dan komprehensif untuk API Anda. Alat seperti Swagger dan GraphQL Playground dapat membantu menghasilkan dokumentasi interaktif.

Pantau Kinerja

Gunakan alat pemantauan untuk melacak kinerja API Anda. Identifikasi dan selesaikan hambatan kinerja dengan segera.

Jaga Kode Anda Tetap Terorganisir

Ikuti struktur kode dan konvensi penamaan yang konsisten untuk menjaga kode Anda tetap bersih dan mudah dipelihara.

Kesimpulan

Selamat! Anda telah mempelajari cara membangun API GraphQL yang kuat dengan Node.js dan Express. Kami telah membahas semuanya mulai dari menyiapkan lingkungan pengembangan Anda hingga mendefinisikan skema dan resolver, menghubungkan ke database, mengoptimalkan API Anda, dan mengujinya dengan Apidog.

Ingat, membangun API yang hebat adalah proses yang berkelanjutan. Terus asah keterampilan Anda, tetap perbarui dengan perkembangan terbaru dalam ekosistem GraphQL, dan terus bereksperimen dengan alat dan teknik baru.

button
Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)Tutorial

Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)

Pelajari cara buat web apa pun dgn Lovable. Panduan lengkap, fitur inovatif, & integrasi Apidog (API gratis).

Ardianto Nugroho

April 15, 2025

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan KomprehensifTutorial

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan Komprehensif

Tutorial ini memandu Anda menyiapkan & mengelola API key khusus di Cursor: OpenAI, Anthropic, Google, & Azure.

Ardianto Nugroho

April 11, 2025

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat LanjutTutorial

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat Lanjut

Pelajari API NVIDIA Llama Nemotron utk buat agen AI canggih.

Ardianto Nugroho

April 11, 2025