Go lang(邮递员)中的请求正文为空
Request Body is null in Go lang (Postman)
我正在使用 Postman post 本地主机上的 json 字符串。我在 Postman 中传递的 json 字符串是:
{
“name”: "foo"
}
但是,当我在我的测试函数中检索数据时,req.Body
我得到这样的结果:&{%!s(*io.LimitedReader=&{0xc0820142a0 0}) <nil> %!s(*bufio.Reader=<nil>) %!s(bool=false) %!s(bool=true) {%!s(int32=0) %!s(uint32=0)} %!s(bool=true) %!s(bool=false) %!s(bool=false)}
我希望在请求正文中得到name:foo。
我的 go lang 代码是:
import (
"encoding/json"
"fmt"
"net/http"
)
type Input struct {
Name string `json:"name"`
}
func test(rw http.ResponseWriter, req *http.Request) {
var t Input
json.NewDecoder(req.Body).Decode(&t)
fmt.Fprintf(rw, "%s\n", req.Body)
}
func main() {
http.HandleFunc("/test", test)
http.ListenAndServe(":8080", nil)
}
谁能告诉我为什么我在 req.Body 属性中得到空白数据?非常感谢。
Reuqes Body 应该是空的,因为您已经阅读了所有内容。但这不是问题。
从你的问题来看,你的输入似乎无效 JSON(你有 “ 与 ” 不同)。
解码方法会return错误,你应该检查一下。
if err := json.NewDecoder(req.Body).Decode(&t); err != nil {
fmt.Println(err)
}
我正在使用 Postman post 本地主机上的 json 字符串。我在 Postman 中传递的 json 字符串是:
{
“name”: "foo"
}
但是,当我在我的测试函数中检索数据时,req.Body
我得到这样的结果:&{%!s(*io.LimitedReader=&{0xc0820142a0 0}) <nil> %!s(*bufio.Reader=<nil>) %!s(bool=false) %!s(bool=true) {%!s(int32=0) %!s(uint32=0)} %!s(bool=true) %!s(bool=false) %!s(bool=false)}
我希望在请求正文中得到name:foo。
我的 go lang 代码是:
import (
"encoding/json"
"fmt"
"net/http"
)
type Input struct {
Name string `json:"name"`
}
func test(rw http.ResponseWriter, req *http.Request) {
var t Input
json.NewDecoder(req.Body).Decode(&t)
fmt.Fprintf(rw, "%s\n", req.Body)
}
func main() {
http.HandleFunc("/test", test)
http.ListenAndServe(":8080", nil)
}
谁能告诉我为什么我在 req.Body 属性中得到空白数据?非常感谢。
Reuqes Body 应该是空的,因为您已经阅读了所有内容。但这不是问题。
从你的问题来看,你的输入似乎无效 JSON(你有 “ 与 ” 不同)。
解码方法会return错误,你应该检查一下。
if err := json.NewDecoder(req.Body).Decode(&t); err != nil {
fmt.Println(err)
}