Routing Dasar
Penjelasan
Routing di Vapor didefinisikan lewat method pada objek Application (biasanya disingkat app), seperti app.get(...) untuk permintaan GET dan app.post(...) untuk permintaan POST. Path route ditulis sebagai daftar komponen string terpisah koma, misalnya app.get("produk", "terbaru") cocok untuk path /produk/terbaru. Untuk segmen path yang nilainya dinamis (misalnya ID resource), gunakan PathComponent berawalan titik dua, seperti ":id". Nilai aktual dari segmen itu bisa diambil di handler lewat req.parameters.get("id"). Vapor menyediakan overload req.parameters.get("id", as: Int.self) untuk langsung mengonversi ke tipe tertentu, mengembalikan nil kalau konversinya gagal.
Contoh Konsep
import Vapor
func routes(_ app: Application) throws {
app.get("produk") { req -> String in
return "Daftar semua produk"
}
app.get("produk", ":id") { req -> String in
guard let id = req.parameters.get("id", as: Int.self) else {
throw Abort(.badRequest)
}
return "Detail produk dengan id \(id)"
}
app.post("produk") { req -> String in
return "Produk baru dibuat"
}
}
Praktikum
Tambahkan route app.get("kategori", ":nama") yang mengambil parameter "nama" sebagai String dan mengembalikan "Kategori: <nama>".
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Route lebih spesifik sebaiknya didefinisikan sebelum route dengan parameter dinamis yang tumpang tindih, supaya Vapor tidak salah mencocokkan path statis sebagai nilai parameter.