Golang : Gorilla web tool kit schema example
This is an example on how to use Gorilla web tool kit Schema package. The Schema package is very useful in mapping data from Form into objects(struct).
Here you go!
package main
import (
"fmt"
"github.com/gorilla/mux"
"github.com/gorilla/schema"
"net/http"
)
type Person struct {
Name string
Phone string
}
func GetFormDataHandler(w http.ResponseWriter, r *http.Request) {
html := `<h1>Contact : </h1>
// replace example.com to your machine domain name or localhost
<form action="http://example.com:8080/process_form_data" method="post">
<div>
<label>Name : </label>
<input type="text" name="name" id="name" >
</div>
<div>
<label>Phone : </label>
<input type="text" name="phone" id="phone" >
</div>
<div>
<input type="submit" value="Send">
</div>
</form>`
w.Write([]byte(fmt.Sprintf(html)))
}
func ReadFormDataHandler(w http.ResponseWriter, r *http.Request) {
err := r.ParseForm()
if err != nil {
fmt.Println(err)
}
person := new(Person)
decoder := schema.NewDecoder()
err = decoder.Decode(person, r.PostForm)
if err != nil {
fmt.Println(err)
}
fmt.Println(person)
w.Write([]byte(fmt.Sprintf("Name is %v \n", person.Name)))
w.Write([]byte(fmt.Sprintf("Phone is %v \n", person.Phone)))
}
func main() {
mx := mux.NewRouter()
mx.HandleFunc("/", GetFormDataHandler)
mx.HandleFunc("/process_form_data", ReadFormDataHandler)
http.ListenAndServe(":8080", mx)
}
Run the code and point your browser to the main page i.e localhost:8080, key in the data and press the "Send" button.
Reference :
See also : Golang : Gorilla mux routing example
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+5.3k Golang : PGX CopyFrom to insert rows into Postgres database
+10.4k Golang : cannot assign type int to value (type uint8) in range error
+28.2k Golang : Connect to database (MySQL/MariaDB) server
+13.3k CodeIgniter : "Fatal error: Cannot use object of type stdClass as array" message
+13.9k Golang : Gin framework accept query string by post request example
+43.3k Golang : Convert []byte to image
+35.6k Golang : Smarter Error Handling with strings.Contains()
+4.9k Python : Find out the variable type and determine the type with simple test
+10.7k Golang : Get local time and equivalent time in different time zone
+20.7k Android Studio : AlertDialog and EditText to get user string input example
+17.3k Golang : Find file size(disk usage) with filepath.Walk
+5.6k Golang : Shortening import identifier