我是 golang 新手,我正在尝试构建 Rest api,到目前为止 GET 端点对我来说工作得很好,但是我在使用 POST 方法(创建用户)时遇到了困难:
这就是我的 User 结构的样子:
type User struct {
ID uint32 `gorm:"primary_key;auto_increment" json:"id"`
Name string `json:"name" binding:"required"`
Email string `json:"email" binding:"required"`
Password string `json:"password" binding:"required"`
CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"created_at"`
UpdatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"updated_at"`
}
存储用户的Repo方法:
func CreateUser() (*models.User, error) {
var input models.User
user := models.User{Name: input.Name, Email: input.Email, Password: input.Password}
result := Config.DB.Debug().Create(&user)
if result.Error != nil {
msg := result.Error
return nil, msg
}
return &user, nil
}
并从控制器调用:
func CreateUser(c *gin.Context) {
//var user models.User
user := models.User{}
user.Prepare()
var input models.User
err := c.BindJSON(&input)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"Error": err.Error(), //this error is thrown
})
return
}
userData, err := repo.CreateUser()
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": err,
})
return
}
c.JSON(http.StatusOK, gin.H{
"data": userData,
})
}
我正在使用 gorm 与数据库交互,如果我对输入进行硬编码,例如
User{Name: "Jinzhu", Email: "[email protected] /cdn-cgi/l/email-protection", Password: "pass1234"}
然后存储数据,但如果这些数据通过邮递员作为参数传递,那么我会收到此错误:
{"Error":"EOF"}
我已经敲了几个小时的头了,但仍然不明白错误出在哪里。