Di materi sebelumnya, router kita hanya peduli pada Alamat (URL), tidak peduli Cara (Method) aksesnya.
Masalah
Secara default, mux.HandleFunc("/users", ...) akan menerima SEMUA jenis request:
Padahal, kita mungkin ingin logic yang berbeda untuk setiap method.
Solusi: Switch Case
Karena Go standar sangat minimalis, kita tidak menulis app.Get() atau app.Post() seperti di framework lain. Kita melakukan pengecekan manual di dalam handler menggunakan switch.
Cara Kerja
Kita memeriksa isi dari r.Method (Metode Request).
MAIN.GO
package mainimport ( "fmt" "net/http")func usersHandler(w http.ResponseWriter, r *http.Request) { // Cek metode apa yang dipakai user switch r.Method { case "GET": // Logic untuk mengambil data w.Write([]byte("Daftar semua user...")) case "POST": // Logic untuk menyimpan data w.Write([]byte("Berhasil membuat user baru!")) default: // Jika method selain GET/POST (misal DELETE), kita tolak. http.Error(w, "Method tidak diizinkan", http.StatusMethodNotAllowed) }}func main() { mux := http.NewServeMux() mux.HandleFunc("/users", usersHandler) fmt.Println("Coba test dengan Postman/Curl ke localhost:8080/users") http.ListenAndServe(":8080", mux)}Kenapa Manual?
Mungkin terlihat ribet dibanding framework lain, tapi cara ini membuat programmer paham betul alur programnya. Tidak ada "sihir" di belakang layar. Kode menjadi sangat eksplisit dan mudah di-debug.
