gin group请求返回后怎么不在执行后续代码?

middle := r.Group("", func(context *gin.Context) {
        requestMethod := context.Request.Method
        token := ""
        fmt.Println("request method===========>", requestMethod)
        if requestMethod == "GET" {
            token = context.DefaultQuery("token", "")
        } else if requestMethod == "POST" {
            token = context.DefaultPostForm("token", "")
        }
        fmt.Println("token================>", token)
        if token == "" {
            context.JSON(http.StatusOK, gin.H{
                "code": statusCode.CODE_TOKEN_EMPTY,
                "msg":  statusCode.GetCodeMsg(statusCode.CODE_TOKEN_EMPTY),
            })
            return
        }
        //从redis获取uid
        redisClient := common.CreateReadRedisClient()
        val, err := redisClient.Get(common.UserLoginPrex + token).Result()
        fmt.Println("user id =============>", val, err)
        if err != nil {
            context.JSON(http.StatusOK, gin.H{
                "code": statusCode.CODE_REDIS_COMMAND_ERR,
                "msg":  statusCode.GetCodeMsg(statusCode.CODE_REDIS_COMMAND_ERR),
            })
            return
        }
        if val == "" {
            context.JSON(http.StatusOK, gin.H{
                "code": statusCode.CODE_TOKEN_INVALID,
                "msg":  statusCode.GetCodeMsg(statusCode.CODE_TOKEN_INVALID),
            })
            return
        } else {
            fmt.Println("uid------------->", val)
            fmt.Println("token------------->", token)
            context.Set("uid", val)
            context.Set("token", token)
        }
    })
    //我的粉丝
    middle.GET("/user/myFans", user.MyFans)

定义了一个middle,然后创建了一个接口,但是如果token为空,或者token非法的话,我在middle里面就返回了json信息。我的理解是在middle里面返回了json错误信息了,后续的user.MyFans这个应该不在执行,但是实际情况是这个还是执行了,导致输出成这样了:

{"code":1001,"msg":"系统错误"}{"code":0,"data":{"allFansNum":0,"directFans":0,"normalOperatorNum":0,"recommendFans":0,"superOperatorNum":0},"msg":"ok"}

请问这里改怎么处理,直接输出{"code":1001,"msg":"系统错误"},后续代码不在执行?

阅读 7.3k
2 个回答
新手上路,请多包涵

要终止就context.Abort(),继续执行就context.Next()

推荐问题