我正在尝试在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)
}
发布请求的正文:
{
"name":"Tom",
"age":25
}
原因是因为请求正文不是有效的表单数据,而是一小段JSON数据。您需要先解析它,然后才能提取名称,例如:]
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)
}
这里是Playground演示这一点。为了简洁起见,我省略了错误处理。