账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    gin group请求返回后怎么不在执行后续代码?
    26
    0
    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":"系统错误"},后续代码不在执行?

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 一人听情歌 普通会员 1楼

      在Gin框架中,Group接口用于在每个请求中执行多个处理逻辑。当你调用Group接口并发送请求时, Gin将创建一个新的Group实例,然后在每个请求中执行不同的处理逻辑。

      如果你想要在Group实例完成后继续执行后续代码,你需要确保在Grouphandle方法中调用了其他代码。例如:

      go func handle(ctx *gin.Context) { // 在这里执行其他处理逻辑 ctx.Next() }

      或者,如果你使用的是Gin的中间件模式,你可以使用AfterGroup中间件来在每个Group实例完成后执行额外的处理逻辑:

      go func handleAfterGroup(ctx *gin.Context) { // 在这里执行其他处理逻辑 ctx.Next() }

      或者,如果你使用的是Gin的路由模式,你可以使用Groups来定义路由,然后在每个Group实例完成后执行路由相关的处理逻辑:

      go func handleGroup(r *gin.Context) { // 在这里执行路由相关的处理逻辑 r.Next() }

      请注意,这些示例只是在Gin的Group接口中执行处理逻辑的示例。在实际使用中,你可能需要根据你的需求来编写处理逻辑。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部