🍭 NodeJS #6: Membuat Server Web Sederhana dengan Node.js (tanpa Express)
Halo, calon developer web! 👋
Di tutorial sebelumnya kita sudah bisa menjalankan JavaScript di Node.js. Sekarang saatnya kita membuat sesuatu yang lebih keren: server web! Server web adalah program yang melayani permintaan dari browser. Setiap kali kamu buka website, browser kamu mengirim permintaan ke server, lalu server mengirim balik halaman webnya.
Kita akan membuat server web sederhana menggunakan modul http yang sudah tersedia di Node.js (tanpa framework tambahan seperti Express). Server kita hanya akan menampilkan teks "Halo Dunia" di browser. Tapi nanti kita akan coba juga membuat beberapa halaman sederhana. Yuk, kita mulai! 🚀
🧐 Apa Itu Server Web?
Coba bayangkan kamu di restoran. Kamu (browser) memesan makanan ke pelayan (server). Pelayan pergi ke dapur (aplikasi kita), mengambil makanan, lalu membawanya ke meja kamu. Nah, server web kerjanya mirip: menerima pesanan (request) dari browser, memprosesnya, dan mengirimkan hasilnya (response) berupa halaman web.
Di Node.js, kita bisa membuat server sendiri dengan mudah.
📁 Langkah 1: Siapkan File Baru
Buat folder proyek baru (misalnya server-sederhana) di komputer kamu. Di dalam folder itu, buat file bernama server.js. Kita akan menulis semua kode di file ini.
📝 Langkah 2: Tulis Kode Server
Ketik kode berikut di server.js:
// Import modul http
const http = require('http');
// Buat server
const server = http.createServer((request, response) => {
// Kirim response header (status 200 artinya OK, dan tipe konten HTML)
response.writeHead(200, { 'Content-Type': 'text/html' });
// Kirim response body (isi halaman)
response.write('<h1>Halo Dunia!</h1>');
response.write('<p>Ini server web pertamaku dengan Node.js</p>');
// Akhiri response
response.end();
});
// Tentukan port yang akan digunakan
const port = 3000;
// Jalankan server
server.listen(port, () => {
console.log(`Server berjalan di http://localhost:${port}`);
});
Mari kita bahas baris per baris:
const http = require('http');– Mengimpor modulhttpbawaan Node.js. Modul ini menyediakan fungsi-fungsi untuk membuat server.http.createServer(...)– Membuat server baru. Fungsi di dalam kurung akan dipanggil setiap kali ada request masuk. Fungsi ini menerima dua parameter:request(permintaan dari browser) danresponse(tanggapan yang akan kita kirim).response.writeHead(200, { 'Content-Type': 'text/html' });– Mengirim header response.200adalah kode status OK (berhasil). Kita juga memberi tahu browser bahwa kita mengirim konten HTML.response.write(...)– Menulis isi response. Bisa dipanggil beberapa kali.response.end()– Menandakan bahwa response sudah selesai dan siap dikirim ke browser.server.listen(port, ...)– Menjalankan server di port tertentu (misal 3000). Fungsi kedua akan dipanggil saat server mulai berjalan.
▶️ Langkah 3: Jalankan Server
- Buka terminal/command prompt.
- Arahkan ke folder tempat
server.jsberada menggunakan perintahcd. - Jalankan perintah:
node server.js
Jika berhasil, terminal akan menampilkan: Server berjalan di http://localhost:3000
🌐 Langkah 4: Buka di Browser
Buka browser favorit kamu (Chrome, Firefox, Edge, dll). Ketik alamat berikut di address bar:
http://localhost:3000
Maka kamu akan melihat halaman dengan teks besar Halo Dunia! dan paragraf kecil di bawahnya. Selamat! 🎉 Kamu baru saja membuat server web pertama dengan Node.js!
🛑 Langkah 5: Menghentikan Server
Untuk menghentikan server, kembali ke terminal dan tekan Ctrl+C (di Windows/Linux/Mac). Server akan berhenti, dan halaman di browser tidak bisa diakses lagi.
🧩 Menambahkan Routing Sederhana
Sekarang server kita hanya menampilkan halaman yang sama untuk semua alamat. Coba akses http://localhost:3000/profil atau http://localhost:3000/kontak, tetap muncul halaman yang sama. Agar lebih menarik, kita bisa membuat server memberikan respons berbeda tergantung URL yang diminta.
Ubah kode server.js menjadi seperti ini:
const http = require('http');
const server = http.createServer((req, res) => {
// req.url berisi path URL, misal '/', '/profil', '/kontak'
const url = req.url;
res.writeHead(200, { 'Content-Type': 'text/html' });
if (url === '/') {
res.write('<h1>Halaman Beranda</h1>');
res.write('<p>Selamat datang di website saya.</p>');
} else if (url === '/profil') {
res.write('<h1>Profil Saya</h1>');
res.write('<p>Nama: Budi, umur: 12 tahun, hobi: coding.</p>');
} else if (url === '/kontak') {
res.write('<h1>Kontak</h1>');
res.write('<p>Email: budi@example.com</p>');
} else {
res.write('<h1>404 Halaman Tidak Ditemukan</h1>');
res.write('<p>Maaf, halaman yang kamu cari tidak ada.</p>');
}
res.end();
});
const port = 3000;
server.listen(port, () => {
console.log(`Server berjalan di http://localhost:${port}`);
});
Simpan, jalankan ulang (hentikan dulu dengan Ctrl+C, lalu node server.js lagi). Sekarang coba akses:
http://localhost:3000/→ halaman berandahttp://localhost:3000/profil→ halaman profilhttp://localhost:3000/kontak→ halaman kontakhttp://localhost:3000/apaaja→ halaman 404
Keren, kan? 😄
📤 Mengirim File HTML dari File Eksternal
Menulis HTML di dalam kode JavaScript seperti di atas kurang praktis untuk halaman yang panjang. Sebaiknya kita simpan HTML di file terpisah, lalu kita baca dan kirimkan. Untuk itu, kita perlu modul fs (file system) untuk membaca file.
Buat file index.html di folder yang sama dengan server.js, isi dengan:
<!DOCTYPE html>
<html>
<head>
<title>Halaman Saya</title>
</head>
<body>
<h1>Selamat Datang</h1>
<p>Ini halaman yang diambil dari file HTML terpisah.</p>
</body>
</html>
Kemudian ubah server.js menjadi:
const http = require('http');
const fs = require('fs'); // import modul file system
const server = http.createServer((req, res) => {
const url = req.url;
if (url === '/') {
// Baca file index.html
fs.readFile('index.html', (err, data) => {
if (err) {
// Kalau error (misal file tidak ada)
res.writeHead(500, { 'Content-Type': 'text/plain' });
res.end('Terjadi kesalahan server');
} else {
// Kirim file HTML
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(data);
}
});
} else {
res.writeHead(404, { 'Content-Type': 'text/html' });
res.end('<h1>404 Halaman Tidak Ditemukan</h1>');
}
});
const port = 3000;
server.listen(port, () => {
console.log(`Server berjalan di http://localhost:${port}`);
});
Coba akses http://localhost:3000/, maka akan menampilkan HTML dari file index.html. Ini lebih rapi, kan?
🧪 Latihan Mandiri
- Buat halaman
profil.htmldankontak.html, lalu tambahkan routing di server untuk menampilkan file-file tersebut. - Tambahkan halaman error 404 yang lebih menarik (dengan CSS sederhana).
- Coba gunakan port lain, misal 8080. Apa yang terjadi? (Jangan lupa akses dengan port yang sesuai).
🎉 Penutup
Sekarang kamu sudah bisa membuat server web sendiri dengan Node.js! Meskipun masih sangat sederhana, ini adalah fondasi penting. Server yang kita buat bisa menerima request dan mengirim response, baik berupa teks, HTML, maupun file HTML.
Di tutorial berikutnya (NodeJS #7) kita akan berkenalan dengan Express.js, sebuah framework yang membuat pembuatan web server menjadi jauh lebih mudah dan cepat. Tapi sebelum itu, pastikan kamu paham cara kerja server dasar ini, ya!
Selamat mencoba, dan sampai jumpa di seri selanjutnya! 👋😊
Ditulis dengan ❤️ untuk para pemula yang ingin menjadi programmer handal.