Request & Response Handling
Penjelasan
Selain parameter route, Genie menyediakan akses ke bagian lain dari HTTP request lewat modul `Genie.Requests`, seperti query string (`getpayload`), header, dan body mentah. Untuk response, Genie punya struct `Genie.Renderer.Respond` atau helper seperti `respond()` untuk mengatur status code dan header secara manual, bukan cuma mengembalikan string polos. Mengontrol response secara eksplisit penting ketika membangun API — misalnya mengembalikan status 404 dengan pesan JSON kustom, atau menambahkan header `Cache-Control` pada response tertentu.
Contoh Konsep
using Genie.Router
using Genie.Requests
using Genie.Responses
route("/cari") do
kata_kunci = haskey(params(:query), "q") ? params(:query)["q"] : ""
"Hasil pencarian untuk: $kata_kunci"
end
route("/status-khusus") do
setstatus(404)
setheaders(Dict("X-Custom-Header" => "tidak-ditemukan"))
"Data tidak ditemukan"
end
Praktikum
Buat route "/filter" yang membaca query string "kategori" dan mengembalikan pesan berbeda kalau parameter tidak ada.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu validasi keberadaan key pada query string dengan `haskey` sebelum mengaksesnya, supaya request tanpa parameter tidak memicu error.