Study
Vapor

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

Editor Latihan

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.