Routing: Method & Parameter Path

Membedakan GET/POST pada alamat yang sama dan membaca nilai dinamis seperti /todos/{id}.

Part 3 dari 17 ± 30 menit Gratis

Pola routing modern (Go 1.22+)

Sejak Go 1.22, pola alamat pada ServeMux bisa memuat method HTTP dan bagian dinamis. Ini membuat routing REST sangat rapi tanpa library tambahan.

mux.HandleFunc("GET /todos",        listTodos)    // hanya method GET
mux.HandleFunc("POST /todos",       createTodo)   // alamat sama, method beda
mux.HandleFunc("GET /todos/{id}",   getTodo)      // {id} = bagian dinamis
mux.HandleFunc("DELETE /todos/{id}", deleteTodo)

Format pola

"METHOD /alamat" — satu spasi memisahkan method dan alamat. Jika method tidak ditulis ("/hello"), semua method diterima.

Parameter path: {id}

Bagian di dalam kurung kurawal adalah wildcard. Nilainya diambil di dalam handler dengan r.PathValue("nama"), dan selalu bertipe string:

func getTodo(w http.ResponseWriter, r *http.Request) {
    id := r.PathValue("id")        // alamat /todos/42 → id = "42"
    fmt.Fprint(w, "Todo nomor ", id)
}

Otomatis 405 Method Not Allowed

Jika alamatnya cocok tetapi methodnya tidak terdaftar (misal POST /todos/42 padahal hanya ada GET /todos/{id}), Go otomatis menjawab 405 Method Not Allowed. Bedakan dengan 404, yaitu alamatnya sendiri tidak dikenal.

Kalau ada beberapa pola yang cocok?

Go memilih pola yang paling spesifik. /todos/export (tanpa wildcard) akan menang atas /todos/{id}.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X