CodeBlanks Logo Icon CodeBlanks

Request ve response

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

index.js
// 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

index.js
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?

index.js
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

Soru
const server = http.createServer((req, res) => { res.____("Merhaba"); });
Cevap
const server = http.createServer((req, res) => { res.end("Merhaba"); });

Açıklama: res.end yanıtı gönderir ve bitirir.

Orta seviye bölümündeki tüm dersler