Middleware
- Dart kursu
- İleri seviye
- Ders 27/83
- 5 dk
shelf Middleware ile ara katman öğrenirsin.
Middleware
Middleware, bir handler'ı sarıp istek/yanıt akışına müdahale eden fonksiyondur. İmza: Middleware logMiddleware(Handler inner) => (req) async { print('istek'); return await inner(req); }.
Tipik kullanım: loglama, kimlik doğrulama, CORS, hata yakalama. Middleware zincirle birbirine eklenir; her katman bir sonrakine karar verebilir.
shelf'in Pipeline API'si: Pipeline().addMiddleware(log).addHandler(app). Bu, modüler bir handler zinciri kurar.
logRequests middleware
shelf, hazır bir logRequests() middleware'i sunar. Her isteğin method ve yolunu konsola yazar; yanıtı bekler ve süreyi de yazdırır.
Kullanım: var handler = Pipeline().addMiddleware(logRequests()).addHandler(appHandler);. Bu handler'ı shelf_io'ya verirsin.
Kendi middleware'ini yazmak için (Handler inner) => (Request req) async { ... } desenini izlersin.
Uygulama Basit log middleware tanımla
import 'package:shelf/shelf.dart'; ekle. Handler logMiddleware(Handler inner) => (Request req) async { print('istek geldi'); return await inner(req); }; tanımla. Response app(Request r) => Response.ok('ok'); tanımla. main'i async yap; var wrapped = logMiddleware(app);, var resp = await wrapped(Request('GET', Uri.parse('http://localhost/'))); ve print(resp.statusCode); ekle.
Başlangıç kodu
void main() {
// shelf import ekle; logMiddleware ve app tanımla
// wrapped handler'ı çağır; statusCode yazdır
}Örnek çözüm
import 'package:shelf/shelf.dart';
Handler logMiddleware(Handler inner) => (Request req) async {
print('istek geldi');
return await inner(req);
};
Response app(Request r) => Response.ok('ok');
void main() async {
var wrapped = logMiddleware(app);
var resp = await wrapped(Request('GET', Uri.parse('http://localhost/')));
print(resp.statusCode);
}Beklenen çıktı
istek geldi 200
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Middleware kullanımları
| Kavram | Anlamı |
|---|---|
Loglama |
Her isteği yazdır |
Auth |
Token denetle |
CORS |
Başlık ekle |
Hata |
Try/catch sar |
2 Middleware ne yapar?
- Yeni bir sunucu başlatır
- İsteği yok sayar
- Handler'ı sarıp akışa müdahale eder Doğru cevap
- Response'u siler
Açıklama: middleware handler'ı sarar ve istek/yanıt akışına müdahale eder.
3 Pipeline'a middleware ekle
Pipeline().____(logRequests()).addHandler(app);
Pipeline().addMiddleware(logRequests()).addHandler(app);
Açıklama: addMiddleware pipeline'a middleware ekler.