BAB 8 – Membuat Web Server Sederhana dengan HTTP Module di Node.js

BAB 8 – Membuat Web Server Sederhana dengan HTTP Module di Node.js

Node.js menyediakan module bawaan bernama http yang memungkinkan kita membuat web server tanpa framework tambahan seperti Express. Walaupun terlihat sederhana, module inilah yang menjadi dasar cara kerja semua framework web di Node.js.

Dengan memahami HTTP module, kita akan lebih mengerti:

  • bagaimana request diterima
  • bagaimana response dikirim
  • bagaimana Node.js menangani koneksi client

Bab ini fokus pada praktik langsung membuat web server dari nol.


Struktur Dasar Web Server Node.js

Web server dengan HTTP module hanya membutuhkan beberapa baris kode inti.

import http from "http";

const server = http.createServer((req, res) => {
  res.end("Hello World");
});

server.listen(3000);

Kode ini sudah cukup untuk membuat server berjalan. Saat browser mengakses http://localhost:3000, Node.js akan mengirimkan respon sederhana.


Menjalankan Server HTTP

Simpan kode di file index.js, lalu jalankan:

node index.js

Jika tidak ada error, server sudah aktif dan siap menerima request. Ini menunjukkan bahwa Node.js mampu bertindak sebagai web server secara langsung.


Memahami Request dan Response

Callback pada createServer memiliki dua parameter penting:

  • req → informasi request dari client
  • res → objek untuk mengirim response

Contoh membaca informasi request:

const server = http.createServer((req, res) => {
  console.log(req.method);
  console.log(req.url);
  res.end("Request diterima");
});

Dari sini, kita bisa menentukan respon berdasarkan request yang masuk.


Menentukan Status Code dan Header Response

Response HTTP sebaiknya memiliki status code dan header yang jelas.

const server = http.createServer((req, res) => {
  res.writeHead(200, {
    "Content-Type": "text/plain"
  });
  res.end("Server berjalan dengan baik");
});

Header ini membantu browser memahami jenis data yang dikirim oleh server.


Membuat Routing Sederhana

Routing menentukan respon berdasarkan URL.

const server = http.createServer((req, res) => {
  if (req.url === "/") {
    res.end("Halaman Utama");
  } else if (req.url === "/about") {
    res.end("Tentang Kami");
  } else {
    res.writeHead(404);
    res.end("Halaman tidak ditemukan");
  }
});

Walaupun sederhana, konsep routing ini adalah dasar dari semua framework web.


Mengirim Response Berupa JSON

Web server sering digunakan untuk membuat API. Berikut contoh mengirim JSON:

const server = http.createServer((req, res) => {
  const data = {
    status: "success",
    message: "API berjalan"
  };

  res.writeHead(200, {
    "Content-Type": "application/json"
  });
  res.end(JSON.stringify(data));
});

Contoh ini sering digunakan sebagai dasar REST API.


Menggabungkan HTTP Module dengan Built-in Module Lain

Contoh membaca file dan mengirimkan isinya sebagai response:

import http from "http";
import { readFile } from "fs/promises";

const server = http.createServer(async (req, res) => {
  const content = await readFile("message.txt", "utf-8");
  res.end(content);
});

server.listen(3000);

Contoh ini menunjukkan bagaimana HTTP module bekerja bersama module lain.


Menangani Error pada Web Server

Server harus siap menghadapi error agar tidak berhenti mendadak.

const server = http.createServer(async (req, res) => {
  try {
    const content = await readFile("message.txt", "utf-8");
    res.end(content);
  } catch (error) {
    res.writeHead(500);
    res.end("Terjadi kesalahan server");
  }
});

Penanganan error adalah bagian penting dari aplikasi server.


Kapan Menggunakan HTTP Module Langsung

HTTP module cocok digunakan saat:

  • belajar dasar Node.js
  • membuat server ringan
  • ingin kontrol penuh tanpa framework

Untuk aplikasi besar, framework seperti Express akan lebih efisien, tetapi memahami HTTP module tetap sangat penting.


Kesimpulan

HTTP module adalah fondasi web server di Node.js. Dengan memahaminya, kita bisa:

  • mengerti alur request dan response
  • membangun server tanpa dependensi tambahan
  • memahami cara kerja framework web secara lebih dalam

Bab ini menjadi dasar sebelum masuk ke penggunaan framework web yang lebih praktis.