Node.js kullanarak HTTP Web Sunucusu Oluşturma Code Örnek E-posta
⚡ Akıllı Özet
Node.js, yerleşik http modülünü kullanarak birkaç satır kodla çalışan bir web sunucusu oluşturur. Sunucu, seçilen bir portta dinleme yapar ve her isteğe bir durum kodu ve gövde ile yanıt verirken, ayrı bir kod diğer sitelerden veri çeker.

MKS node.js Bu çerçeve çoğunlukla sunucu tabanlı uygulamalar oluşturmak için kullanılır. Kullanıcılara içerik sunan web sunucuları oluşturmak için kolaylıkla kullanılabilir.
Sunucuyla ilgili istekleri çeşitli modüller işler, yerleşik olanlar da bunlardan biridir. http Bunların başında modül geliyor. Node.js kullanarak temel bir web sunucu uygulaması oluşturmayı ve ardından başka bir siteden veri istemeyi inceleyeceğiz.
HTTP kullanan bir web sunucusu olarak Node
Şimdi ilk Node.js uygulamasının nasıl oluşturulup çalıştırılacağına dair bir örneğe bakalım.
Uygulama, 7000 numaralı bağlantı noktasında dinleme yapan basit bir sunucu modülü oluşturur. Tarayıcı üzerinden bu bağlantı noktasına bir istek gönderildiğinde, sunucu bir yanıt gönderir. Merhaba Dünya Müşteriye verilen yanıt.
Code açıklama
- MKS
requirefonksiyon bir şeyi okur JavaSenaryo Dosyayı çalıştırır ve dışa aktarılan verileri içeren nesneyi döndürür. Burada dosyayı yükler.httpBu modül, işlevselliğinin uygulamada kullanılabilir olmasını sağlar. - Bir sunucu uygulaması basit bir fonksiyondan oluşturulur. Bu fonksiyon, sunucuya her istek ulaştığında çalışır.
- Bir istek alındığında, yanıt şu durum bilgisiyle birlikte gönderilir: 200Bu, başarılı bir yanıt için HTTP başlığındaki standart durum kodudur.
- Yanıt gövdesi, metin dizisinin kendisidir. Merhaba Dünya.
server.listenBu komut, uygulamanın 7000 numaralı porttan gelen istemci isteklerini dinlemesini sağlar. Kullanılabilir herhangi bir port kullanılabilir.
Komut başarıyla çalıştırılırsa, tarayıcıda aşağıdaki çıktı görünür.
Çıktı
Çıktıdan:
- localhost'a göz atma URL 7000 numaralı bağlantı noktasında şu dize görüntülenir: Merhaba Dünya sayfada.
- Kod 7000 numaralı portu belirttiği için, çıktı yalnızca bu porta erişildiğinde görünür.
İşte referans olarak kullanabileceğiniz kod:
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);
Node.js'de GET İsteklerini İşleme
Node.js'de başka bir siteden veri almak için GET isteği yapmak oldukça basittir. Geçmişte bunun için şunlara ihtiyaç duyuluyordu: request Komut satırından yüklenen modül:
npm install request
Bu komut, Node paket yöneticisinden gerekli modülü indirmesini ve kurmasını ister. Kurulum başarılı olduğunda, komut satırı kurulu modülün adını ve sürümünü şu biçimde gösterir: <name>@<version>.
Yukarıdaki fotoğrafta, request Modül ve sürüm numarası indirildi ve kuruldu.
Code açıklama
- MKS
requestÖnceki adımda kurulan modül, web sitelerine GET istekleri göndermek için gerekli işlevleri sağlar. - Bir siteye GET isteği gönderilir ve yanıt geldiğinde bir geri çağırma işlevi çalışır. Geri çağırma işlevi üç parametre alır:
- Hata — İstek yapılırken ortaya çıkan hataları kaydeder.
- yanıt — yanıtla birlikte gelen HTTP başlıklarını taşır.
- Vücut — yanıtın tüm içeriğini içerir.
- Alınan içerik
bodyParametre konsola yazdırılır.
İşte referans olarak kullanabileceğiniz kod:
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); });
⚠️ Kullanımdan kaldırılma bildirimi: the request modül Şubat 2020'de tamamen kullanımdan kaldırıldı. ve başka güncelleme almaz. Yine de yüklenir ve çalışır, bu nedenle yukarıdaki örnek mevcut projeler için geçerliliğini korur, ancak npm install request Artık bir kullanım dışı bırakma uyarısı veriyor. Yeni kodlar yerleşik özelliği kullanmalıdır. fetch Bir sonraki bölümde gösterilen işlev.
Node.js'de Native fetch kullanarak HTTP istekleri nasıl yapılır?
Node küresel bir özellik ekledi. fetch Bu işlev, 18. sürümden itibaren tarayıcıların zaten sağladığı API ile uyumludur. Herhangi bir paket kurulumu gerekmez ve işlev bir promise döndürdüğü için doğrudan çalışır. 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();
Geri arama tarzından üç farka dikkat çekmekte fayda var. Birincisi, fetch Yalnızca ağ düzeyinde bir hata durumunda reddeder; HTTP 404 veya 500 hatası yine de başarıyla çözümlenir, bu yüzden response.ok Bu kontrolün var olmasının ve bir yerden diğerine geçerken bunu atlamanın neden en yaygın hata olduğunun açıklaması requestİkincisi, metin yanıtla birlikte iletilmez; metin, yanıtla birlikte açıkça okunmalıdır. response.text() düz metin için veya response.json() JSON için ve bunların her biri kendi vaadini döndürür. Üçüncüsü, tüm çağrı vaat tabanlı olduğundan, tek bir try/catch Bu, hem isteği hem de okunan gövdeyi kapsar ve hata öncelikli geri çağırma parametresini tamamen değiştirir.
Node 16 veya daha önceki sürümlerde çalışması gereken komut dosyaları için şunu yükleyin: node-fetch or axios Bunun yerine, her ikisi de karşılaştırılabilir bir vaat tabanlı arayüz sunduğundan ve çalışma zamanı yükseltildikten sonra yalnızca içe aktarma satırında bir değişiklik gerektirdiğinden, bu yöntem tercih edilir.
Request, Fetch ve Axios: Hangisini Kullanmalı?
Node.js ile ilgili çoğu kaynakta üç HTTP istemcisi bulunur ve bunlardan yalnızca biri yeni çalışmalar için mantıklı bir varsayılan seçenektir. Bakım durumları, bir bağımlılığa ihtiyaç duyulup duyulmadığı ve her birinin hata durumunu nasıl bildirdiği açısından farklılık gösterirler; bu nedenle aşağıdaki tabloda bunlar yan yana gösterilmiştir.
| Görünüş | talep | getir (yerleşik) | AXIOS |
|---|---|---|---|
| Durum | 2020'dan beri kullanımdan kaldırılıyor | Çekirdekte muhafaza edildi | Aktif bakımlı |
| Montaj | npm paketi | Node 18+'da hiçbiri yok. | npm paketi |
| stil | Hata öncelikli geri çağırma | Söz | Söz |
| JSON ayrıştırma | Manuel veya JSON seçeneği | response.json() aracılığıyla manuel olarak | Otomatik |
| 404 veya 500 hatası nedeniyle reddedilen başvurular | Yok hayır | Yok hayır | Evet |
Kullanım fetch Mevcut Node sürümünde yeni projeler için, herhangi bir bağımlılık eklemediği ve geliştiricilerin zaten bildiği tarayıcı API'siyle eşleştiği için tercih edin. axios Otomatik JSON işleme, istek engelleyiciler veya hata durumlarında reddetme gibi yöntemler gerçek kod tasarrufu sağlayacaksa, bu yöntemleri kullanın. request Yalnızca halihazırda ona bağımlı olan ve onu değiştirmeyi planlayan eski uygulamaların içinde.
Sık Karşılaşılan Node.js Sunucu Hataları ve Bunların Nasıl Düzeltileceği
İlk Node sunucusunu başlatırken yaşanan hataların çoğu, sunucu kodunun kendisinden ziyade portlardan, yollardan veya yanıt alınamamasından kaynaklanır.
- EADDRINUSE: Başka bir işlem zaten portu meşgul ediyor. Çalıştırın.
netstat -ano | findstr :7000on Windowsya dalsof -i :7000on macOS Linux kullanıyorsanız, o işlemi durdurun veya farklı bir port seçin. - Düşük port üzerinden EACCES: 1024'ün altındaki portlar için yükseltilmiş ayrıcalıklar gereklidir. Geliştirme sırasında 3000 veya 7000 gibi 1024'ün üzerinde bir port kullanın.
- Tarayıcı donuyor ve asla yüklenmiyor: Görevli hiç aramadı.
response.end()Bağlantı zaman aşımına uğrayana kadar açık kalır, bu nedenle işleyici üzerinden geçen her yol yanıtı sonlandırmalıdır. - 'http' modülü bulunamadı: Dosya adı yanlış yazılmış veya komut dosyası Node yerine tarayıcıda çalışıyor. Temel modüllerin kurulumu gerekmez.
- Değişiklikler görünmüyor: Node, dosyayı başlangıçta bir kez yükler. Her düzenlemeden sonra işlemi yeniden başlatın veya bir izleyici altında çalıştırın, örneğin...
node --watch server.js.




