Özet - Shelf
- Dart kursu
- İleri seviye
- Ders 30/83
- 5 dk
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
void main() {
// shelf ve dart:convert import ekle; healthHandler tanımla
// handler'ı çağır; JSON gövdeyi yazdır
}Örnek çözüm
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ı
return ____.ok('merhaba');
return Response.ok('merhaba');
Açıklama: Response.ok 200 yanıtı oluşturur.