Membuat Server Web HTTP di Node.js dengan Code Example
โก Ringkasan Cerdas
Node.js membangun server web yang berfungsi hanya dalam beberapa baris menggunakan modul http bawaan. Server mendengarkan pada port yang dipilih dan menjawab setiap permintaan dengan kode status dan isi, sementara kode terpisah mengambil data dari situs lain.

The Node.js Framework sebagian besar digunakan untuk membuat aplikasi berbasis server. Framework ini dapat dengan mudah digunakan untuk membangun server web yang menyajikan konten kepada pengguna.
Beberapa modul menangani permintaan terkait server, yang sudah terintegrasi. http Modul ini merupakan yang utama di antaranya. Kita akan melihat bagaimana cara membuat aplikasi server web dasar menggunakan Node.js, dan kemudian bagaimana cara meminta data dari situs lain.
Node sebagai web server menggunakan HTTP
Mari kita lihat contoh cara membuat dan menjalankan aplikasi Node.js pertama.
Aplikasi ini membuat modul server sederhana yang mendengarkan pada port 7000. Ketika permintaan dibuat melalui browser pada port tersebut, server mengirimkan Hello Dunia tanggapan kepada klien.
Code Penjelasan
- The
requirefungsi membaca sebuah JavaNaskah file, mengeksekusinya, dan mengembalikan objek ekspornya. Di sini ia memuathttpmodul tersebut sehingga fungsinya tersedia di dalam aplikasi. - Aplikasi server dibuat dari sebuah fungsi sederhana. Fungsi tersebut dijalankan setiap kali sebuah permintaan mencapai server.
- Ketika sebuah permintaan diterima, respons akan dikirim dengan status tertentu. 200Ini adalah kode status standar dalam header HTTP untuk respons yang berhasil.
- Isi respons itu sendiri adalah string. Hello Dunia.
server.listenMembuat aplikasi mendengarkan permintaan klien pada port 7000. Port mana pun yang tersedia dapat digunakan.
Jika perintah berhasil dijalankan, output berikut akan muncul di browser.
Keluaran
Dari hasil keluarannya:
- Mengakses localhost URL pada port 7000 menampilkan string Hello Dunia di halaman tersebut.
- Karena kode tersebut menentukan port 7000, output hanya terlihat saat mengakses port tersebut.
Berikut kode untuk referensi:
var http = require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello World\n"); }); server.listen(7000);
Menangani Permintaan GET di Node.js
Melakukan permintaan GET untuk mengambil data dari situs lain sangat mudah di Node.js. Secara historis, hal ini membutuhkan... request modul, diinstal dari baris perintah:
npm install request
Perintah tersebut meminta pengelola paket Node untuk mengunduh modul yang dibutuhkan dan menginstalnya. Setelah instalasi berhasil, baris perintah akan menampilkan nama dan versi modul yang terinstal dalam format berikut: <name>@<version>.
Pada cuplikan gambar di atas, request Modul beserta nomor versinya telah diunduh dan diinstal.
Code Penjelasan
- The
requestModul yang diinstal pada langkah sebelumnya menyediakan fungsi-fungsi yang dibutuhkan untuk melakukan permintaan GET ke situs web. - Permintaan GET dikirim ke suatu situs, dan fungsi callback akan dijalankan setelah respons diterima. Fungsi callback menerima tiga parameter:
- error โ mencatat setiap kesalahan yang muncul saat melakukan permintaan.
- Response โ membawa header HTTP yang dikembalikan bersama respons.
- Body โ berisi seluruh isi tanggapan.
- Konten yang diterima di
bodyParameter tersebut ditulis ke konsol.
Berikut kode untuk referensi:
var request = require("request"); request("https://example.com", function(error, response, body) { // Always check the error parameter before using the body if (error) { console.error("Request failed:", error.message); return; } console.log(body); });
โ ๏ธ Pemberitahuan penghentian penggunaan: itu request modul tersebut adalah sepenuhnya dihentikan penggunaannya pada Februari 2020. dan tidak menerima pembaruan lebih lanjut. Program ini masih terinstal dan berjalan, jadi contoh di atas tetap valid untuk proyek yang sudah ada, tetapi npm install request Sekarang menampilkan peringatan penghentian penggunaan. Kode baru harus menggunakan fungsi bawaan. fetch fungsi yang akan ditunjukkan pada bagian selanjutnya.
Cara Melakukan Permintaan HTTP dengan fetch bawaan di Node.js
Node telah menyertakan fitur global. fetch Fungsi ini sudah ada sejak versi 18, sesuai dengan API yang sudah disediakan oleh browser. Tidak diperlukan instalasi paket, dan fungsi ini mengembalikan promise, sehingga dapat bekerja langsung dengan browser. async/await.
// No require and no npm install needed on Node 18 or later async function getData() { try { const response = await fetch("https://example.com"); // fetch does NOT reject on 404 or 500 โ check ok yourself if (!response.ok) { throw new Error("HTTP status " + response.status); } const body = await response.text(); console.log(body); } catch (err) { // Network failures and the throw above both land here console.error("Request failed:", err.message); } } getData();
Ada tiga perbedaan dari gaya callback yang perlu diperhatikan. Pertama, fetch hanya menolak jika terjadi kegagalan di tingkat jaringan; HTTP 404 atau 500 masih berhasil diselesaikan, itulah sebabnya response.ok Pemeriksaan ini ada dan mengapa mengabaikannya adalah kesalahan paling umum saat berpindah dari requestKedua, isi pesan tidak disampaikan bersamaan dengan respons โ pesan tersebut harus dibaca secara eksplisit. response.text() untuk teks biasa atau response.json() untuk JSON, dan masing-masing mengembalikan promise-nya sendiri. Ketiga, karena seluruh panggilan berbasis promise, satu try/catch Mencakup permintaan dan isi yang dibaca, menggantikan sepenuhnya parameter callback yang mengutamakan kesalahan.
Untuk skrip yang harus dijalankan pada Node 16 atau versi sebelumnya, instal node-fetch or axios Sebaliknya, karena keduanya mengekspos antarmuka berbasis promise yang sebanding dan hanya memerlukan perubahan pada baris impor setelah runtime ditingkatkan.
request vs fetch vs axios: Mana yang Harus Digunakan?
Terdapat tiga klien HTTP yang sering muncul di sebagian besar materi Node, dan hanya satu di antaranya yang merupakan pilihan default yang masuk akal untuk pekerjaan baru. Ketiganya berbeda dalam status pemeliharaan, apakah diperlukan dependensi sama sekali, dan bagaimana masing-masing memberikan sinyal status kesalahan, sehingga tabel di bawah ini membandingkan ketiganya secara berdampingan.
| Aspek | permintaan | ambil (bawaan) | aksioma |
|---|---|---|---|
| Status | Tidak digunakan lagi sejak tahun 2020. | Dipelihara di inti | Dipelihara secara aktif |
| Instalasi | paket npm | Tidak ada di Node 18+ | paket npm |
| Gaya | Callback berbasis kesalahan pertama | Janji | Janji |
| Penguraian JSON | Manual, atau opsi JSON | Manual melalui response.json() | secara otomatis |
| Ditolak dengan kode kesalahan 404 atau 500 | Tidak | Tidak | Ya |
penggunaan fetch Untuk proyek baru pada versi Node terbaru, karena tidak menambahkan dependensi dan sesuai dengan API browser yang sudah dikenal oleh pengembang. Pilih axios Ketika penanganan JSON otomatis, pencegat permintaan, atau penolakan pada status kesalahan akan menghemat kode sebenarnya. Pertahankan request hanya di dalam aplikasi lama yang sudah bergantung padanya, dan berencana untuk menggantinya.
Kesalahan Umum pada Server Node.js dan Cara Memperbaikinya
Sebagian besar kegagalan saat memulai server Node pertama kali berasal dari port, jalur, atau respons yang hilang, bukan dari kode server itu sendiri.
- EADDRINUSE: Proses lain sudah menggunakan port tersebut. Jalankan.
netstat -ano | findstr :7000on Windows, ataulsof -i :7000on macOS dan Linux, kemudian hentikan proses tersebut atau pilih port yang berbeda. - EACCES pada port rendah: Port di bawah 1024 memerlukan hak akses yang lebih tinggi. Gunakan port di atas 1024 selama pengembangan, seperti 3000 atau 7000.
- Browser macet dan tidak pernah memuat: petugas penanganan panggilan tidak pernah menelepon
response.end()Koneksi tetap terbuka hingga waktu habis, sehingga setiap jalur melalui handler harus mengakhiri respons. - Modul 'http' tidak ditemukan: Nama file salah eja, atau skrip dijalankan di browser dan bukan di Node. Modul inti tidak perlu diinstal.
- Perubahan tidak muncul: Node memuat file sekali saat startup. Mulai ulang proses setelah setiap pengeditan, atau jalankan di bawah pengawas seperti
node --watch server.js.




