Form Input {29/100}

Form untuk melakukan input merupakan suatu hal yang tak bisa dilepaskan dalam suatu aplikasi web, seperti yang kita ketahui selalu ada proses I/O dalam aplikasi web. Form merupakan tempat user melakukan input data yang selanjutnya akan di kirim ke server untuk di olah oleh program.

Hari ini kita akan belajar bagaimana menghandle input dari form di Golang. Pertama mari kita buat file html untuk menampilkan form kita

//input.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Golang</title>
</head>
<body>
<form action="/input" method="post">
Name:<input type="text" name="name">
Address:<input type="text" name="address">
<input type="submit" value="Submit">
</form>
</body>
</html>

Selanjutnya mari buka go source yang kemarin sudah kita buat, dan edit seperti ini

package main
import (
"fmt"
"net/http"
"log"
"html/template"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Println("path", r.URL.Path)
fmt.Println("scheme", r.URL.Scheme)
fmt.Fprintf(w, "Hello world")
}
func me(w http.ResponseWriter, r *http.Request) {
fmt.Println("path", r.URL.Path)
fmt.Println("scheme", r.URL.Scheme)
fmt.Fprintf(w, "Mehhhhh?")
}
func input(w http.ResponseWriter, r *http.Request) {

fmt.Println("method:", r.Method)

if r.Method == "GET" {
t, _ := template.ParseFiles("input.html")
t.Execute(w, nil)
} else {
r.ParseForm()
        fmt.Println("Your Name:", r.Form["name"])
fmt.Println("Your Address:", r.Form["address"])
fmt.Fprintf(w, "Your name is %s and you are located in %s", r.Form["name"], r.Form["address"])
}
}
func main() {
http.HandleFunc("/", index)
http.HandleFunc("/me", me)
http.HandleFunc("/input", input)
    err := http.ListenAndServe(":6969", nil)

if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

Pertama, kita menambahkan function HandleFunc untuk menghandle route /input, kita akan menggunakan route /input untuk memparsing file html dan mengolah data dari inputan user.

Selanjutnya kita membuat function input. Look, kita bisa mendapatkan http request method (GET/POST/PUT etc) dengan menggunakan r.Method.

Di dalam function input, kita melakukan flow control programming yang mendeteksi http request method. Apabila request method nya GET, maka kita akan memparsing file html kita (input.html). Oh iya kita juga harus mengimport package html/template untuk melakukan proses ini. Kita memparsing file html menggunakan function template.ParseFiles() yang kemudian diikuti function Execute().

Dan apabila request method nya POST, maka pertama kita menjalankan function r.ParseForm(). Setelah menjalankan itu maka kita bisa mendapatkan inputan user dengan menggunakan r.Form[“name”] dan r.Form[“address”].