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.
Contents
- 1 Struktur Dasar Web Server Node.js
- 2 Menjalankan Server HTTP
- 3 Memahami Request dan Response
- 4 Menentukan Status Code dan Header Response
- 5 Membuat Routing Sederhana
- 6 Mengirim Response Berupa JSON
- 7 Menggabungkan HTTP Module dengan Built-in Module Lain
- 8 Menangani Error pada Web Server
- 9 Kapan Menggunakan HTTP Module Langsung
- 10 Kesimpulan
- 11 Related Posts
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 clientres→ 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.