无法从 post 请求中解析 JSON
can't parse JSON from a post requests
我构建了一个 echo 微服务 api,有两个路由:post 和 get。
get 方法工作正常,但 get 方法无法解析 JSON,这意味着在 Bind() 函数之后结构为空。
这一定是我遗漏的一个非常愚蠢和微小的东西......有什么帮助吗?
// main.go
//--------------------------------------------------------------------
func main() {
e := echo.New()
e.GET("/getmethod", func(c echo.Context) error { return c.JSON(200, "good")})
e.POST("/login", handlers.HandleLogin)
e.Start("localhost:8000")
}
// handlers/login.go
//--------------------------------------------------------------------
type credentials struct {
email string `json:"email"`
pass string `json:"pass"`
}
//--------------------------------------------------------------------
func HandleLogin(c echo.Context) error {
var creds credentials
err := c.Bind(&creds)
if err != nil {
return c.JSON(http.StatusBadRequest, err) // 400
}
return c.JSON(http.StatusOK, creds.email) // 200
}
当运行使用postman发出post请求时(确保:post方法,url到达正确的路线,在body> 在 raw> JSON 格式下,我按预期发送 JSON )我收到返回状态 200 ok,但为空 json,而我希望收到电子邮件属性。
知道为什么 Bind() 没有正确提取字段吗?
您应该通过将每个首字母大写来导出凭证结构的字段,否则 json-package 不知道您有哪些字段:
type credentials struct {
Email string `json:"email"`
Pass string `json:"pass"`
}
更多信息:JSON and dealing with unexported fields
我构建了一个 echo 微服务 api,有两个路由:post 和 get。
get 方法工作正常,但 get 方法无法解析 JSON,这意味着在 Bind() 函数之后结构为空。
这一定是我遗漏的一个非常愚蠢和微小的东西......有什么帮助吗?
// main.go
//--------------------------------------------------------------------
func main() {
e := echo.New()
e.GET("/getmethod", func(c echo.Context) error { return c.JSON(200, "good")})
e.POST("/login", handlers.HandleLogin)
e.Start("localhost:8000")
}
// handlers/login.go
//--------------------------------------------------------------------
type credentials struct {
email string `json:"email"`
pass string `json:"pass"`
}
//--------------------------------------------------------------------
func HandleLogin(c echo.Context) error {
var creds credentials
err := c.Bind(&creds)
if err != nil {
return c.JSON(http.StatusBadRequest, err) // 400
}
return c.JSON(http.StatusOK, creds.email) // 200
}
当运行使用postman发出post请求时(确保:post方法,url到达正确的路线,在body> 在 raw> JSON 格式下,我按预期发送 JSON )我收到返回状态 200 ok,但为空 json,而我希望收到电子邮件属性。
知道为什么 Bind() 没有正确提取字段吗?
您应该通过将每个首字母大写来导出凭证结构的字段,否则 json-package 不知道您有哪些字段:
type credentials struct {
Email string `json:"email"`
Pass string `json:"pass"`
}
更多信息:JSON and dealing with unexported fields