Rest req.FormValue未映射req.body值
我试图在request.body中选择一个值,但一直得到一个空字符串。 表单映射也显示为空。 我做错了什么Rest req.FormValue未映射req.body值,rest,go,post,Rest,Go,Post,我试图在request.body中选择一个值,但一直得到一个空字符串。 表单映射也显示为空。 我做错了什么 package user import ( "fmt" "net/http" "../../types" ) func PostTest(w http.ResponseWriter, r *http.Request) { r.ParseForm() x := r.FormValue("name") fmt.Println(x) }
package user
import (
"fmt"
"net/http"
"../../types"
)
func PostTest(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
x := r.FormValue("name")
fmt.Println(x)
}
邮政请求正文:
{
"name":"Tom",
"age":25
}
原因是请求主体不是有效的表单数据,而是JSON数据的blob。您需要先对其进行解析,然后才能提取名称,例如:
type data struct {
Name string
Age int
}
func PostTest(w http.ResponseWriter, r *http.Request) {
var d data
json.NewDecoder(r.Body).Decode(&d) // Error handling omitted.
fmt.Println(d.Name)
}
这里有一个例子来证明这一点。为了简洁起见,我省略了错误处理。PostTest是如何调用的?
ParseForm
将解析url编码的表单。您正在发送json。您必须阅读请求正文并自行解组。