Saat kita belajar HTML, kita tahu bahwa saat kita membuat form, kita bisa submit data nya dengan method GET atau POST. Jika menggunakan method GET maka hasilnya semua data di form akan menjadi query parameter. Sedangkan jika menggunakan POST, maka semua data di form akan dikirim via body HTTP Request. Di golang, untuk mengambil data form POST sangatlah mudah.
package belajar_golang_web
import (
"fmt"
"io"
"net/http"
"net/http/httptest"
"strings"
"testing"
)
func FormPost(writer http.ResponseWriter, request *http.Request) {
err := request.ParseForm()
if err != nil {
panic(err)
}
firstName := request.PostForm.Get("first_name")
lastName := request.PostForm.Get("last_name")
// jika menggunakan PostFormValue maka kita tidak perlu melakukan ParseForm, karana akan dilakukan otomatis
// firstName := request.PostFormValue("first_name")
// lastName := request.PostFormValue("last_name")
fmt.Fprintf(writer, "Hello %s %s", firstName, lastName)
}
func TestFormPost(t *testing.T) {
requestBody := strings.NewReader("first_name=Rendy&last_name=Wijaya")
request := httptest.NewRequest(http.MethodPost, "http://localhost:8080", requestBody)
request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
recorder := httptest.NewRecorder()
FormPost(recorder, request)
response := recorder.Result()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}

Penutup
Pada artikel kali ini kita telah belajar tentang form post pada golang web. Dan pada artikel selanjutnya saya akan membahas response code pada golang web.