我正在使用 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 和正文 URL
PATCH http://127.0.0.1:8080/books/2
身体
{
"title": "Breaking Dawn",
}
方案/型号
package models
type Book struct {
ID uint `json:"id" gorm:"primary_key"`
Title string `json:"title"`
Author string `json:"author"`
}
宝慕林4294392
慕码人2483693
绝地无双
随时随地看视频慕课网APP
相关分类