Scopes untuk Grouping Routes
Penjelasan
Saat aplikasi punya banyak route, `web::scope` membantu mengelompokkan route yang berbagi prefix path yang sama (misalnya semua route `/api/v1/catatan/...`) sekaligus memungkinkan middleware khusus hanya berlaku untuk grup tersebut. Ini mirip namespace routing di Rails (`namespace :api do ... end`). Di dalam scope, kamu tetap mendaftarkan service/route seperti biasa, tapi path yang didaftarkan otomatis mendapat prefix dari scope-nya.
Contoh Konsep
use actix_web::{get, web, App, HttpServer, Responder};
#[get("/catatan")]
async fn daftar_catatan() -> impl Responder {
"Daftar catatan versi 1"
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new().service(
web::scope("/api/v1")
.service(daftar_catatan)
)
})
.bind(("127.0.0.1", 8080))?
.run()
.await
}
// Handler di atas jadi bisa diakses di /api/v1/catatan
Praktikum
Lengkapi scope agar route daftar_catatan berada di bawah prefix "/api/v1".
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Kamu bisa mem-`.wrap()` middleware khusus di level scope (bukan hanya di level App) — berguna kalau misalnya hanya route di bawah `/api/admin` yang butuh middleware autentikasi tambahan.