我正在使用 Gin 和 GORM 在 Golang 中构建 Book API。我已成功实施 API 的创建、获取和删除部分,但更新导致 500 内部服务器错误。我正在尝试更新功能,它只更新正文中提供的特定标签(下面给出的示例)。非常感谢任何帮助或指导。去模型func UpdateBook(c *gin.Context) { // Get model if exist var book models.Book if err := models.DB.Where("id = ?", c.Param("id")).First(&book).Error; err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Record not found!"}) return } // Validate input var input UpdateBookInput if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } models.DB.Model(&book).Updates(input) c.JSON(http.StatusOK, gin.H{"data": book})}UpdateBookInput 结构type UpdateBookInput struct { Title string `json:"title"` Author string `json:"author"`}主程序func main() { router := gin.Default() models.ConnectDatabase() router.GET("/books", controllers.FetchBooks) router.GET("/books/:id", controllers.FindBookByID) router.GET("/books/title/:title", controllers.FindBookByTitle) router.GET("/books/author/:author", controllers.FindBookByAuthor) router.POST("/books", controllers.CreateBook) router.PATCH("/books/:id", controllers.UpdateBook) router.DELETE("/books/:id", controllers.RemoveBook) router.Run()}请求 URL 和正文 URLPATCH http://127.0.0.1:8080/books/2身体{ "title": "Breaking Dawn",}方案/型号package modelstype Book struct { ID uint `json:"id" gorm:"primary_key"` Title string `json:"title"` Author string `json:"author"`}
2 回答
慕码人2483693
TA贡献1860条经验 获得超9个赞
我想 JSON 数据包含一个字符串类型的 ID 字段,因为这里唯一的 uint 字段是 ID。要么 gorm 对更新或类似的东西表现得很奇怪。
确保输入是干净的。
- 2 回答
- 0 关注
- 231 浏览
添加回答
举报
0/150
提交
取消
