B.11. HTTP Method: POST & GET

Sampai chapter ini, terhitung kita telah mempelajari banyak hal yang berhubungan dengan template view. Kali ini topik yang akan dibahas sedikit berbeda, yaitu mengenai penanganan HTTP request di back-end.

Sebuah route handler pada dasarnya bisa menerima segala jenis request, apapun jenis HTTP method-nya maka akan tetap masuk ke satu handler (seperti POST, GET, dan atau lainnya). Pengategorian request berdasarkan HTTP method bisa dilakukan menggunakan seleksi kondisi.

Pada chapter lain kita akan belajar teknik routing yg lebih advance dengan bantuan 3rd party routing library.

B.11.1. Praktek

Mari coba praktekan. Disiapkan sebuah handler untuk rute / yang didalamnya ada pengecekan seleksi kondisi berdasarkan HTTP method.

package main

import "net/http"
import "fmt"

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        switch r.Method {
        case "POST":
            w.Write([]byte("post"))
        case "GET":
            w.Write([]byte("get"))
        default:
            http.Error(w, "", http.StatusBadRequest)
        }
    })

    fmt.Println("server started at localhost:9000")
    http.ListenAndServe(":9000", nil)
}

Struct *http.Request memiliki property bernama Method, isinya informasi HTTP method dari request.

  • Jika HTTP method adalah POST, maka text post dijadikan nilai response
  • Jika HTTP method adalah GET, maka text get dijadikan nilai response

B.11.2. Testing

Gunakan Postman, atau tools sejenisnya untuk mempermudah testing.

Berikut adalah contoh request dengan method GET.

Dasar Pemrograman Golang - Request GET

Dan di bawah ini adalah contoh request dengan method POST.

Dasar Pemrograman Golang - Request POST

Jika method yang digunakan adalah selain POST dan GET, maka web server menghasilkan response 400 Bad Request. Di bawah ini adalah contoh request dengan method PUT.

Dasar Pemrograman Golang - 400 Bad Request