Request ve response
- Node.js kursu
- Orta seviye
- Ders 14/116
- 5 dk
request ve response nesnelerini öğrenirsin.
Request ve response
Handler'ın iki parametresi req ve res'tir. req gelen isteğin bilgilerini taşır: req.method (GET, POST...), req.url (istek yolu) ve req.headers (başlıklar).
res yanıtı yazmak için metotlar sağlar. res.setHeader("Content-Type", "text/plain") ile başlık eklersin. res.write("parça") ile yanıtı parça parça yazabilir, res.end() ile bitirirsin. En yaygın kullanım res.end("tam yanıt")'tır; bu hem içeriği yazar hem bağlantıyı kapatır. Her istekte res.end tam olarak bir kez çağrılmalıdır; aksi halde istek askıda kalır.
İstek bilgilerini okuma
Bir isteğin yöntemini ve yolunu okumak için req.method ve req.url kullanırsın. Örnek: console.log(req.method + " " + req.url); bir GET / isteğinde GET / yazdırır.
Bu bilgilerle farklı yollara farklı yanıtlar verebilirsin; bu, routing'in temelidir. req.headers bir nesnedir; req.headers["host"] gibi başlıklara erişirsin. Yanıtı özelleştirmek için res.setHeader ile içerik türü belirlemek iyi bir alışkanlıktır: res.setHeader("Content-Type", "text/plain"). Bu, tarayıcının yanıtı nasıl yorumlayacağını söyler.
Uygulama İsteği dinle ve yanıt ver
http modülünü içe aktar. createServer ile bir server oluştur: handler console.log("İstek: " + req.method) yapsın ve res.end("Tamam") ile yanıt versin. Altındaki hazır kod sunucuyu başlatır, bir istek atar ve "Yanıt: " çıktısı verir.
Başlangıç kodu
// http modülünü içe aktar ve server oluştur
// buraya yaz
server.listen(3000, () => {
http.get("http://localhost:3000/", (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log("Yanıt: " + body); server.close(); });
});
});Örnek çözüm
const http = require("http");
const server = http.createServer((req, res) => {
console.log("İstek: " + req.method);
res.end("Tamam");
});
server.listen(3000, () => {
http.get("http://localhost:3000/", (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log("Yanıt: " + body); server.close(); });
});
});Beklenen çıktı
İstek: GET Yanıt: Tamam
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Özelliği anlamına eşle
| Kavram | Anlamı |
|---|---|
req.method |
İstek yöntemi |
req.url |
İstek yolu |
res.end |
Yanıtı bitirir |
res.setHeader |
Başlık ekler |
2 req.url neyi tutar?
http.createServer((req, res) => { ... })- Yanıtın içeriğini
- İstek yolunu (örn. /bilgi) Doğru cevap
- Sunucunun kapı numarasını
- İstek başlıklarını
Açıklama: req.url istek yolunu tutar.
3 res.end çağrısını tamamla
const server = http.createServer((req, res) => { res.____("Merhaba"); });
const server = http.createServer((req, res) => { res.end("Merhaba"); });
Açıklama: res.end yanıtı gönderir ve bitirir.