无法从 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