JSON yanıtı
- Dart kursu
- İleri seviye
- Ders 29/83
- 5 dk
shelf ile JSON yanıtı öğrenirsin.
JSON yanıtı
shelf ile JSON dönmek için Response.ok(jsonEncode(data), headers: {'content-type': 'application/json'}) kullanılır. jsonEncode dart:convert'tan gelir; Map ve List'leri JSON metnine çevirir.
content-type başlığı önemlidir; tarayıcı ve istemci gövdeyi JSON olarak ayrıştırır. Başlık olmadan gövde düz metin olarak gelir ve otomatik ayrıştırılmaz.
Örnek: Response.ok(jsonEncode({'name': 'Ayşe'}), headers: {'content-type': 'application/json'}). Bu yanıt 200 durum koduyla birlikte JSON gövde döndürür.
JSON içerik türü başlığı
headers parametresi bir Map<String, String> alır ve yanıt başlıklarını ayarlar. JSON için {'content-type': 'application/json'} standarttır; bu, istemcinin gövdeyi nasıl ayrıştıracağını belirler.
Başlık anahtarları küçük-büyük harf duyarsızdır; Content-Type ile content-type aynı şekilde işlenir. Değerler ise olduğu gibi gönderilir.
Birden çok başlık eklenebilir: headers: {'content-type': 'application/json', 'cache-control': 'no-cache'}. cache-control tarayıcı önbelleğini denetler.
Uygulama JSON yanıt döndür
import 'package:shelf/shelf.dart'; import 'dart:convert'; ekle. Response userHandler(Request r) => Response.ok(jsonEncode({'name': 'Ayşe'}), headers: {'content-type': 'application/json'}); tanımla. main'i async yap; handler'ı çağır ve print(await resp.readAsString()); ekle.
Başlangıç kodu
void main() {
// shelf ve dart:convert import ekle; userHandler tanımla
// handler'ı çağır; JSON gövdeyi async oku ve yazdır
}Örnek çözüm
import 'package:shelf/shelf.dart';
import 'dart:convert';
Response userHandler(Request r) =>
Response.ok(jsonEncode({'name': 'Ayşe'}),
headers: {'content-type': 'application/json'});
void main() async {
var resp = userHandler(Request('GET', Uri.parse('http://localhost/')));
print(await resp.readAsString());
}Beklenen çıktı
{"name":"Ayşe"}
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 JSON encode
var body = ____({'name': 'Ayşe'});
var body = jsonEncode({'name': 'Ayşe'});
Açıklama: jsonEncode Map'i JSON metnine çevirir.
2 JSON parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
jsonEncode |
Map → String |
application/json |
İçerik türü |
headers |
Başlık haritası |
Response.ok |
200 yanıtı |
3 JSON yanıtta hangi başlık şart?
- content-type Doğru cevap
- host
- accept
- user-agent
Açıklama: application/json başlığı şarttır.