1 回答
TA贡献1806条经验 获得超5个赞
你可以做一些事情来减少代码重复,但不幸的是,你总是会在 go 中编写一些样板,因为它有明确的错误处理和缺乏 OOP 性。(这不一定是坏事!)。
因此,我目前唯一的建议是将通用功能放在中间件处理程序中并稍微重构您的代码,例如:
parseIdMiddleware := func(c *gin.Context) {
id, err := strconv.Atoi(c.Param("id"))
if businessID == 0 || err != nil {
c.AbortWithError(http.StatusBadRequest, errors.New("Missing ID"))
return
}
c.Set("id", id)
}
...
gin.Use(gin.ErrorLogger(), parseIdMiddleware)
并将您的处理程序重写为
func GetBusiness(c *gin.Context) {
id := c.MustGet("id").(int)
business, err := store.GetBusiness(id)
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
return // don't forget this!
}
c.JSON(http.StatusOK, business)
}
和往常一样,阅读其他人的代码!我推荐https://github.com/drone/drone。这应该让您对如何构建代码有一个很好的概述。
- 1 回答
- 0 关注
- 144 浏览
添加回答
举报