У меня есть следующий Gin межплатформенное:Не удалось Прервать() контекст - джин
func CheckAppId(appC *core.Context) gin.HandlerFunc {
return func(c *gin.Context) {
//get Basic Auth credentials
appId, token, _ := c.Request.BasicAuth()
if appId == "" {
c.JSON(http.StatusOK, gin.H{"code": "MISSING_APP_ID", "message": "Your request is missing an application id"})
return //this is being ignored???
}
c.Next() //this still gets hit
}
}
но если appId == ""
JSON получает вернулся и c.Next()
запускается на выполнение слишком. Это ожидаемое поведение?
EDIT Я думал, что проблема была продана, но происходит то же самое. Теперь у меня есть:
func CheckAppId(appC *core.Context) gin.HandlerFunc {
return func(c *gin.Context) {
//get Basic Auth credentials
appId, token, _ := c.Request.BasicAuth()
if appId == "" {
//I'm getting this JSON in the response
c.JSON(http.StatusOK, gin.H{"code": "MISSING_APP_ID", "message": "Your request is missing an application id"})
c.Abort()
}
//find app_id in database
app := core.App{}
err := appC.Database.C("apps").Find(bson.M{"id" : appId}).One(&app)
if err != nil { //no app found
//and I'm getting this JSON in the response
c.JSON(http.StatusOK, gin.H{"code": "INVALID_APP_ID", "message": "The application id provided could not be found"})
c.Abort()
}
c.Next()
}
}
В вызове API я получаю как «MISSING_APP_ID» Json и «INVALID_APP_ID» Json
Вы уверены, что это действительно так? Сделайте 'fmt.Printf («% # v \ n », appId)' right before 'c.Next()' – Lander
В ответе есть JSON в вопросе и больше JSON от фактического маршрута, по которому запрос был ! – tommyd456