Study
ASP.NET Core

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.

Editor Latihan

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.