Langsung ke konten utama

ASP.NET Core Request Processing Pipeline

Hai, teman-teman developer! 😄 Kali ini kita bakal ngobrolin tentang ASP.NET Core Request Processing Pipeline dengan contoh biar makin gampang paham. 

Apa Itu ASP.NET Core Request Processing Pipeline?

Bayangin gini: Pipeline di ASP.NET Core tuh kayak jalur estafet buat menangani permintaan (request) dan respons HTTP di aplikasi web kita. Ada beberapa "pos" alias middleware yang punya tugas masing-masing, seperti ngecek otentikasi, routing, logging, hingga enkripsi data. Middleware ini diatur di file Program.cs.

Lihat deh diagram ini (bayangin aja, ya 😜):

Langkah-Langkah di Pipeline ASP.NET Core

Ini dia langkah-langkah yang bakal dilalui permintaan (request) di pipeline:

  1. Request
    Semua dimulai dari sini! HTTP request masuk ke pipeline, terus masing-masing middleware bisa ngecek, ngubah, atau nerusin request ke middleware berikutnya.

  2. ExceptionHandler
    Middleware ini bertugas jadi pahlawan kalau ada error nggak terduga. Dia bakal nangkep error, logging, dan kirim respons error yang rapi (misalnya halaman error atau pesan JSON).

  3. HSTS
    HTTP Strict Transport Security. Singkatnya, ini middleware yang ngasih tau browser: "Hei, cuma terima HTTPS ya, jangan HTTP!" Jadi aplikasi kita lebih aman.

  4. HttpsRedirection
    Kalau ada yang coba akses lewat HTTP, middleware ini bakal langsung redirect ke HTTPS. Aman, kan?

  5. Static Files
    Middleware ini bikin file statis (kayak HTML, CSS, JavaScript, gambar) langsung dilayani tanpa perlu lewat middleware lain.

  6. Routing
    Nah, ini otaknya jalur request. Middleware ini menentukan controller/action mana yang bakal tangani request berdasarkan URL-nya.

  7. CORS
    Cross-Origin Resource Sharing di sini yang nentuin apakah request dari domain lain boleh diterima atau nggak. Berguna banget buat API yang diakses dari frontend beda domain.

  8. Authentication
    Bagian ini ngecek identitas pengguna atau klien (misalnya lewat token JWT, cookie, dll). Kalau nggak lolos, permintaan bakal ditolak.

  9. Authorization
    Kalau udah lolos otentikasi, bagian ini ngecek apakah pengguna punya izin buat akses sumber daya tertentu.

  10. Custom Middleware
    Nah, ini middleware buatan kita sendiri. Bisa buat logging tambahan, caching, validasi, atau apa pun yang dibutuhkan.

  11. Endpoint
    Ini dia tujuan akhirnya! Bisa berupa controller action, API endpoint, atau Razor Page yang bakal ngolah request dan bikin respons.

  12. Response
    Setelah endpoint bikin respons, respons itu bakal melewati middleware lagi (urutan terbalik) sebelum dikirim balik ke klien.

Contoh Pipeline ASP.NET Core

Yuk, kita lihat kode buat contoh sederhana:

namespace FirstCoreWebApplication  
{  
    public class Program  
    {  
        public static void Main(string[] args)  
        {  
            var builder = WebApplication.CreateBuilder(args);  
            var app = builder.Build();  

            // Middleware 1  
            app.Use(async (context, next) =>  
            {  
                await context.Response.WriteAsync("Middleware1: Incoming Request\n");  
                await next();  
                await context.Response.WriteAsync("Middleware1: Outgoing Response\n");  
            });  

            // Middleware 2  
            app.Use(async (context, next) =>  
            {  
                await context.Response.WriteAsync("Middleware2: Incoming Request\n");  
                await next();  
                await context.Response.WriteAsync("Middleware2: Outgoing Response\n");  
            });  

            // Middleware 3 (Terminal)  
            app.Run(async (context) =>  
            {  
                await context.Response.WriteAsync("Middleware3: Request handled and response generated\n");  
            });  

            app.Run();  
        }  
    }  
}  

Penjelasan Eksekusi

Kalau kalian jalanin aplikasi di atas, browser bakal nunjukin ini:

  1. Middleware1: Incoming Request
  2. Middleware2: Incoming Request
  3. Middleware3: Request handled and response generated
  4. Middleware2: Outgoing Response
  5. Middleware1: Outgoing Response

Kenapa urutannya kayak gitu? Karena setelah middleware terakhir selesai, pipeline "balik arah" buat nge-handle respons.

Poin Penting yang Perlu Diingat

  • Middleware diproses berurutan sesuai urutan di file Program.cs.
  • Setiap middleware bisa manggil next() buat nerusin request ke middleware berikutnya, atau memutus alur (short-circuit).
  • Middleware bisa akses baik request masuk maupun respons keluar.
  • Urutan middleware ngaruh banget ke keamanan, performa, dan fungsi aplikasi. Jadi, atur baik-baik ya!

Sampai sini dulu ya pembahasannya! Semoga penjelasan ini bikin kalian makin paham, ya. Selamat ngoding! 🚀

Komentar

Postingan populer dari blog ini

Membuat Aplikasi Web ASP.NET Core di Visual Studio 2022

Artikel ini membahas langkah-langkah membuat aplikasi ASP.NET Core menggunakan Visual Studio 2022 dan framework .NET 8. 1. Membuka Visual Studio 2022 Buka Visual Studio 2022 dan klik "Create a new project" di layar awal. 2. Memilih Template Proyek Di jendela "Create a new project" , pilih template ASP.NET Core Empty . Template ini memberikan struktur dasar tanpa konfigurasi awal seperti controller, view, atau API. Setelah itu, klik Next . 3. Konfigurasi Proyek Baru Isi informasi proyek seperti berikut: Project Name : Masukkan nama proyek, misalnya FirstCoreWebApplication . Location : Tentukan lokasi folder untuk menyimpan proyek, misalnya D:\Projects . Solution Name : Biasanya sama dengan nama proyek, tetapi bisa diubah jika diperlukan. Centang "Place solution and project in the same directory" jika solusi dan proyek ingin disimpan dalam satu folder. Klik Create untuk melanjutkan. 4. Pengaturan Tambahan Pada jendela "Additional Information...

Remix IDE: Solusi Praktis untuk Menulis dan Deploy Kontrak Pintar

Remix IDE  adalah lingkungan pengembangan terintegrasi berbasis web yang dirancang untuk menulis, mengompilasi, dan menyebarkan smart contract menggunakan bahasa pemrograman  Solidity  di blockchain Ethereum. Alat ini banyak digunakan oleh pengembang blockchain karena kemudahannya dalam menyediakan fitur lengkap untuk pengembangan, pengujian, dan debugging kontrak pintar. Fitur Utama Remix IDE Berbasis Web dan Gratis Tidak perlu diunduh atau diinstal. Anda dapat mengakses Remix langsung melalui browser di  remix.ethereum.org . Karena berbasis web, Remix dapat digunakan di berbagai perangkat selama ada akses internet. Editor Kode Mendukung penulisan kode Solidity dengan penyorotan sintaks, autocompletion, dan validasi kesalahan. Fitur penyorotan kesalahan (error highlighting) memudahkan pengembang untuk menemukan bug pada kode. Compiler Solidity Remix menyediakan compiler bawaan untuk mengonversi kode Solidity menjadi bytecode yang dapat dijalankan di Ethereum Virtual...

Perlu dicatat Built-in Global Variable pada Solidity

Solidity, sebagai bahasa pemrograman untuk membuat smart contract di Ethereum dan blockchain lainnya, menyediakan beberapa variabel global bawaan . Variabel ini memungkinkan akses mudah ke informasi tentang blockchain, transaksi, dan konteks eksekusi. Dengan menggunakan variabel ini, pengembang dapat berinteraksi dengan lingkungan blockchain tanpa perlu menulis banyak kode tambahan. Berikut penjelasan kategori dan variabel global yang umum digunakan: 1. Informasi Blockchain Variabel-variabel ini menyediakan informasi terkait blockchain, seperti blok saat ini dan propertinya. block.number Mengembalikan nomor blok saat ini. Contoh: uint nomorBlokSaatIni = block.number; block.timestamp Waktu pembuatan blok saat ini dalam format detik sejak Unix epoch. Biasanya digunakan untuk mendapatkan waktu saat ini. Contoh: require(block.timestamp >= waktuMulai, "Terlalu awal untuk eksekusi!"); block.difficulty Tingkat kesulitan penambangan pada blok saat ini. Contoh: uin...