【发布时间】:2021-08-03 02:53:42
【问题描述】:
您好,我一直在尝试模拟 gin.Context,但无法使其工作 我正在尝试他们在solution 中所做的事情,但它不适用于我的路由器这是我遇到的错误
r.POST("/urls", urlRepo.CreateUrl)
cannot use urlRepo.CreateUrl (value of type func(c controllers.Icontext)) as gin.HandlerFunc value in argument to r.POSTcompilerIncompatibleAssign
这是我为稍后模拟而创建的接口以及我将在其中进行测试的方法
type Icontext interface {
BindJSON(obj interface{}) error
JSON(code int, obj interface{})
AbortWithStatus(code int)
AbortWithStatusJSON(code int, jsonObj interface{})
}
func (repository *UrlRepo) CreateUrl(c Icontext) {
var url models.Url
c.BindJSON(&url)
if !validators.IsCreateJsonCorrect(url) {
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": "Error format in Short or Full"})
return
}
err := repository.reposito.CreateUrl(repository.Db, &url)
if err != nil {
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": err})
return
}
c.JSON(http.StatusOK, url)
}
代替
func (repository *UrlRepo) CreateUrl(c Icontext)
原来是这样
func (repository *UrlRepo) CreateUrl(c *gin.Context)
【问题讨论】: