CodeBlanks Logo Icon CodeBlanks

Özet - Shelf

Handler, Middleware ve Router'ı birleştirerek bir API yazarsın.

Özet - Shelf

Bu grupta shelf HTTP çerçevesini öğrendik: handler (Request → Response), middleware (handler sarma), shelf_router (URL route), JSON yanıtı.

Temel: handler bir fonksiyondur; middleware ile sarılır; Router URL'leri handler'lara bağlar; JSON için jsonEncode + content-type başlığı gerekir.

shelf_io ile HttpServer'a bağlanır; test için handler doğrudan çağrılabilir.

Uygulama Özet: handler + JSON

import 'package:shelf/shelf.dart'; import 'dart:convert'; ekle. Response healthHandler(Request r) => Response.ok(jsonEncode({'status': 'ok'}), 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; healthHandler tanımla
  // handler'ı çağır; JSON gövdeyi yazdır
}

Örnek çözüm

main.dart
import 'package:shelf/shelf.dart';
import 'dart:convert';

Response healthHandler(Request r) =>
    Response.ok(jsonEncode({'status': 'ok'}),
        headers: {'content-type': 'application/json'});

void main() async {
  var resp = healthHandler(Request('GET', Uri.parse('http://localhost/')));
  print(await resp.readAsString());
}

Beklenen çıktı

{"status":"ok"}

Soru ve cevaplar

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

1 JSON için hangisi şart?

  • Router
  • content-type başlığı Doğru cevap
  • Isolate
  • Future.delayed

Açıklama: JSON için content-type: application/json başlığı şarttır.

2 Kavramları eşleştir

Kavram Anlamı
Handler Request → Response
Middleware Handler sarma
Router URL → handler
jsonEncode Map → String

3 200 yanıtı

Soru
return ____.ok('merhaba');
Cevap
return Response.ok('merhaba');

Açıklama: Response.ok 200 yanıtı oluşturur.

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