Pengenalan Rocket
Penjelasan
Rocket adalah web framework Rust yang mengutamakan ergonomi dan keamanan lewat tipe data — filosofinya berbeda dari Axum yang mengandalkan komposisi extractor+layer ala Tower. Rocket lebih banyak memakai attribute macro (`#[get("/")]`, `#[post("/notes")]`) untuk mendeklarasikan route langsung di atas fungsi handler, sehingga banyak kesalahan (path tidak cocok tipe parameter, lupa mendaftarkan route) tertangkap saat KOMPILASI, bukan saat runtime. Entry point aplikasi Rocket ditandai dengan atribut `#[launch]` di atas fungsi yang mengembalikan `Rocket<Build>` — Rocket menangani setup runtime async di baliknya secara otomatis, kamu tidak perlu menulis `#[tokio::main]` secara manual seperti di Axum (meskipun di balik layar Rocket tetap memakai Tokio). Ciri khas Rocket yang akan sering kamu temui: request guard (validasi/ekstraksi data sebelum handler dijalankan, mirip extractor Axum tapi dengan trait `FromRequest` miliknya sendiri), fairing (setara middleware), dan catcher (penanganan error HTTP terpusat, misalnya `#[catch(404)]`).
Instalasi & Cara Menjalankan
// 1. Buat project baru
// cargo new hello-rocket
// cd hello-rocket
// 2. Tambahkan dependency
// cargo add rocket
// src/main.rs
#[macro_use] extern crate rocket;
#[get("/")]
fn hello() -> &'static str {
"Hello, Rocket!"
}
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![hello])
}
// Jalankan dengan: cargo run
// Rocket default berjalan di http://127.0.0.1:8000
Praktikum
Lengkapi handler `about` supaya mengembalikan teks "Ini halaman about" saat diakses lewat path `/about`, lalu daftarkan ke `mount`.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan lupa baris `#[macro_use] extern crate rocket;` di paling atas `main.rs` — tanpa ini, attribute macro seperti `#[get]` dan makro `routes!` tidak akan dikenali kompiler. Ini beda dari kebanyakan crate Rust modern yang biasanya cukup `use`, karena Rocket masih mempertahankan pola lama ini untuk kompatibilitas macro-nya.