Server HTTP dengan Modul http Bawaan

Membuat server web pertama: request, response, status code, header, dan routing manual.

Part 16 dari 24 ± 40 menit Gratis

Server web dalam beberapa baris

const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain; charset=utf-8');
  res.end('Halo dari Node!');
});

server.listen(3000, () => {
  console.log('Server jalan di http://localhost:3000');
});

Fungsi yang diberikan ke createServer dipanggil setiap ada permintaan. Ia menerima dua objek: req (permintaan masuk) dan res (respons yang akan kamu kirim).

Request: apa yang diminta klien?

  • req.method — GET, POST, PUT, DELETE, ...
  • req.url — path + query, mis. /produk?kategori=kopi.
  • req.headers — header (huruf kecil), mis. req.headers['content-type'].
  • Body: req adalah stream yang dibaca lewat event data/end.

Response: jawabanmu

res.statusCode = 404;                                   // atau res.writeHead(404, { ... })
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ error: 'Tidak ditemukan' }));  // SELALU akhiri dengan end()

Lupa memanggil res.end() membuat klien menggantung menunggu jawaban.

Kode status HTTP yang paling umum

KodeArtiKapan
200 OKBerhasilGET sukses
201 CreatedSumber daya dibuatPOST sukses
204 No ContentSukses tanpa isiDELETE sukses
400 Bad RequestPermintaan salah/tak validValidasi gagal
401 UnauthorizedBelum loginToken tak ada
403 ForbiddenTidak punya izin
404 Not FoundTidak adaPath/ID tidak dikenal
500 Internal Server ErrorKesalahan serverBug / error tak terduga

Routing manual

const server = http.createServer((req, res) => {
  const url = new URL(req.url, 'http://localhost');

  if (req.method === 'GET' && url.pathname === '/') {
    res.setHeader('Content-Type', 'text/plain; charset=utf-8');
    return res.end('Halo dari Node!');
  }
  if (req.method === 'GET' && url.pathname === '/api/waktu') {
    res.setHeader('Content-Type', 'application/json');
    return res.end(JSON.stringify({ pesan: 'ok' }));
  }

  res.statusCode = 404;
  res.setHeader('Content-Type', 'application/json');
  res.end(JSON.stringify({ error: 'Tidak ditemukan' }));
});

Membaca body (POST)

let body = '';
req.on('data', (chunk) => { body += chunk; });
req.on('end', () => {
  const data = JSON.parse(body);     // bungkus try/catch: klien bisa mengirim JSON rusak!
  res.statusCode = 201;
  res.end(JSON.stringify(data));
});

Mengapa kebanyakan orang memakai framework

Dengan http mentah kamu harus mengurus routing, parsing body, header, validasi, dan error sendiri — membosankan dan rawan bug. Express (bab berikutnya) membungkus semuanya. Tetapi memahami http penting: Express, Fastify, dan NestJS semua berdiri di atasnya.

Menguji server

Di komputer asli: buka browser di http://localhost:3000, atau curl, atau Postman/Thunder Client. Di KelasIT, server "mendengarkan" di simulator; fetch('http://localhost:3000/...') dari kodemu sendiri dialihkan ke server itu.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X