Study
Actix

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".

Editor Latihan

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.