Routing di Actix-web
Penjelasan
Actix-web punya dua gaya utama untuk mendaftarkan route. Pertama, macro attribute seperti `#[get("/catatan")]` yang ditempel langsung di atas fungsi handler — ringkas dan deklaratif. Kedua, pendaftaran manual lewat `App::new().route("/catatan", web::get().to(handler))` yang lebih eksplisit dan berguna kalau route-nya dibuat secara dinamis. Kamu juga bisa mendaftarkan banyak handler sekaligus dengan `.service(handler)` untuk handler yang memakai macro attribute.
Contoh Konsep
use actix_web::{get, post, web, App, HttpServer, Responder};
#[get("/catatan")]
async fn daftar_catatan() -> impl Responder {
"Daftar semua catatan"
}
async fn tambah_catatan() -> impl Responder {
"Catatan ditambahkan"
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.service(daftar_catatan)
.route("/catatan", web::post().to(tambah_catatan))
})
.bind(("127.0.0.1", 8080))?
.run()
.await
}
Praktikum
Lengkapi pendaftaran route POST untuk handler `tambah_catatan` di path "/catatan".
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Konsisten pilih satu gaya (macro attribute atau `.route()` manual) per project supaya route lebih mudah ditelusuri — mencampur keduanya secara acak bisa membuat kode sulit dibaca saat project membesar.