Middleware
Penjelasan
Middleware ASP.NET Core membentuk PIPELINE berurutan yang dilewati tiap request — didaftarkan lewat app.Use() di Program.cs, urutan pendaftarannya PERSIS urutan eksekusinya. Tiap middleware menerima delegate next mewakili middleware berikutnya, dipanggil lewat await next() untuk meneruskan request.
Contoh Konsep
app.Use(async (context, next) =>
{
Console.WriteLine($"{context.Request.Method} {context.Request.Path}");
await next(); // lanjut ke middleware berikutnya
});
app.Use(async (context, next) =>
{
var umur = int.Parse(context.Request.Query["umur"].FirstOrDefault() ?? "0");
if (umur < 18)
{
context.Response.StatusCode = 403;
await context.Response.WriteAsync("Akses ditolak, umur minimal 18 tahun");
return; // hentikan pipeline, tidak panggil next()
}
await next();
});
Praktikum
Buat middleware dengan app.Use() yang menolak akses (status 403) kalau jam sekarang (DateTime.Now.Hour) di luar rentang 8-17, dan memanggil await next() kalau masih dalam jam kerja.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Lupa memanggil await next() (dan tidak menulis response apa pun) membuat REQUEST MENGGANTUNG SELAMANYA, persis seperti kalau lupa next() di Express.js — dan urutan app.Use() SANGAT PENTING, middleware autentikasi biasanya didaftarkan SEBELUM middleware yang butuh data user sudah login.