获取参数
GETPOSTr.Form.Get("参数名")r.PostForm.Get("参数名")HTTPnet/httprequest.go
type Request struct {
Body io.ReadCloser
Form url.Values
PostForm url.Values
MultipartForm *multipart.Form
}
BodyParseForm()ParseMultipartForm()
ParseFormURLPOSTPUTPATCHr.PostFormr.Formbodyr.FormURLHTTPContent-Typeapplication/x-www-form-urlencodedbodyr.PostFormbody10MBParseMultipartFormenctypemultipart/form-datafunc (r *Request) ParseMultipartForm(maxMemory int64) errorParseMultipartFormmaxMemorymaxMemory
直接解析到struct
ioutil.ReadAll(r.Body)bodystructtagbodystructstructformtagformnametagformform-
完整代码
main.go
package main
import (
"net/http"
"fmt"
"io/ioutil"
"encoding/json"
"html/template"
)
type Test struct {
NickName string `json:"nickname"`
Phone string `json:"phone"`
PassWord string `json:"password"`
}
func main() {
http.HandleFunc("/test", testFunc)
http.HandleFunc("/testdata", testData)
http.ListenAndServe(":8000", nil)
}
func testFunc(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("templates/test.html")
t.Execute(w, nil)
}
func testData(w http.ResponseWriter, r *http.Request) {
var test Test
r.ParseForm()
test.NickName = r.Form.Get("nickname")
if test.NickName == "" {
data, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Println(err)
return
}
err = json.Unmarshal(data, &test)
if err != nil {
fmt.Println(err)
return
}
fmt.Fprintf(w, "====>%s %s %s", test.NickName, test.Phone, test.PassWord)
} else {
test.Phone = r.Form.Get("phone")
test.PassWord = r.Form.Get("password")
fmt.Fprintf(w, "%s %s %s", test.NickName, test.Phone, test.PassWord)
}
}
test.html
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>test</title>
</head>
<body>
<form action="/testdata" method="post">
NickName:<br>
<input type="text" name="nickname" value="请输入昵称">
<br>
Phone:<br>
<input type="text" name="phone" value="请输入手机号">
<br>
PassWord:<br>
<input type="text" name="password" value="请输入密码">
<br><br>
<input type="submit" value="submit">
</form>
</body>
</html>