CodeBlanks Logo Icon CodeBlanks

JSON yanıtı

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

main.dart
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

main.dart
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

Soru
var body = ____({'name': 'Ayşe'});
Cevap
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.

İleri seviye bölümündeki tüm dersler