无法从帖子请求中解析 JSON

我构建了一个 echo 微服务 api,有两个路由:post 和 get。


get 方法工作正常,但 get 方法无法解析 JSON,这意味着在 Bind() func 之后结构为空。


这一定是我想念的一件非常愚蠢和微小的事情......有什么帮助吗?


// 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

}

当使用邮递员运行发布请求时(确保:发布方法,url 是正确的路由,在 body> raw> JSON 格式下,我按预期发送 JSON)我收到返回状态 200 ok,但 json 为空,而我希望收到电子邮件属性。


知道为什么 Bind() 没有正确提取字段吗?


一只甜甜圈
浏览 83回答 1
1回答

慕后森

您应该通过将每个首字母大写来导出凭证结构的字段,否则 json-package 不知道您有哪些字段:type credentials struct {     Email string `json:"email"`     Pass string `json:"pass"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go