JSON yanıtı
- Node.js kursu
- Orta seviye
- Ders 16/116
- 5 dk
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
// 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) => {
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
res.end(JSON.____({ mesaj: "Merhaba" }));
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ı?
res.setHeader("Content-Type", "?")- text/plain
- text/html
- text/string
- application/json Doğru cevap
Açıklama: application/json yanıtı JSON işaretler.