CodeBlanks Logo Icon CodeBlanks

JSON yanıtı

JSON formatında yanıt döndürmeyi öğrenirsin.

JSON yanıtı

Bir API'de yanıt genellikle JSON formatında gönderilir. Node.js'te JSON.stringify(nesne) bir nesneyi JSON dizesine çevirir. Örnek: JSON.stringify({ mesaj: "Merhaba" }) sonucu {"mesaj":"Merhaba""}.

Tarayıcının yanıtı JSON olarak yorumlaması için içerik türünü belirtmelisin: res.setHeader("Content-Type", "application/json"). Sonra res.end(JSON.stringify(veri)) ile gönderirsin. Örnek: res.setHeader("Content-Type", "application/json"); res.end(JSON.stringify({ mesaj: "Merhaba" }));. Bu, REST API'lerin standart yanıt biçimidir; istemci JSON.parse ile kolayca nesneye çevirir.

İçerik türü başlığı

JSON yanıtı gönderirken Content-Type başlığı önemlidir. application/json değeri yanıtı JSON olarak işaretler; istemci bunu otomatik ayrıştırır.

Başlığı res.setHeader ile eklersin: res.setHeader("Content-Type", "application/json"). Bu çağrı res.end'den önce yapılmalıdır; çünkü başlıklar yanıt gövdesinden önce gönderilir. Yanlış içerik türü (örn. text/plain) JSON'un düz metin gibi görünmesine neden olur; bazı istemciler ayrıştıramaz. Doğru başlık, API'nin güvenle kullanılmasını sağlar.

Uygulama JSON yanıtı gönder

http modülünü içe aktar. createServer ile bir server oluştur. Handler içinde res.setHeader("Content-Type", "application/json") çağır ve res.end(JSON.stringify({ mesaj: "Merhaba" })) ile yanıt ver. Altındaki hazır kod sunucuyu başlatır ve bir istek atar.

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) => {
  res.setHeader("Content-Type", "application/json");
  res.end(JSON.stringify({ mesaj: "Merhaba" }));
});

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ı

Yanıt: {"mesaj":"Merhaba"}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 JSON.stringify çağrısını tamamla

Soru
res.end(JSON.____({ mesaj: "Merhaba" }));
Cevap
res.end(JSON.stringify({ mesaj: "Merhaba" }));

Açıklama: JSON.stringify nesneyi dizeye çevirir.

2 Parçayı rolüne eşle

Kavram Anlamı
JSON.stringify Nesneyi dizeye çevirir
res.setHeader Başlık ekler
application/json JSON içerik türü
res.end Yanıtı gönderir

3 JSON yanıtı için Content-Type ne olmalı?

index.js
res.setHeader("Content-Type", "?")
  • text/plain
  • text/html
  • text/string
  • application/json Doğru cevap

Açıklama: application/json yanıtı JSON işaretler.

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