访问一个不存在的路径返回404,统一异常

来源:25-3 登录逻辑完善

难猿

2020-12-03

图片描述

访问一个不存在的请求或一个不存在的路径返回Json而不是404怎么弄
比如:上面POST请求我使用GET访问这个时候返回404,我在网上找了一下资料写了中间件还是不行,参考了这个文章:https://blog.csdn.net/u014155085/article/details/106733391 还是不行。老师需要火力支援。

写回答

1回答

bobby

2020-12-04

package main

import (
   "fmt"
   "net/http"
   "time"

   "github.com/gin-gonic/gin"
)

func MyLogger() gin.HandlerFunc {
   return func(c *gin.Context) {
      t := time.Now()
      c.Set("example", "123456")
      //让原本改执行的逻辑继续执行
      c.Next()

      end := time.Since(t)
      fmt.Printf("耗时:%V\n", end)
      status := c.Writer.Status()
      fmt.Println("状态", status)
   }
}

func Hook404() gin.HandlerFunc {
   return func(c *gin.Context) {

      c.Next()
      status := c.Writer.Status()
      if status == 404 {
         c.JSON(http.StatusOK, gin.H{
            "msg": "页面找不到",
         })
      }
   }
}

func main() {
   router := gin.Default()
   //使用logger和recovery中间件 全局所有
   router.Use(Hook404())

   router.GET("/ping", func(c *gin.Context) {
      c.JSON(http.StatusOK, gin.H{
         "message": "pong",
      })
   })

   router.Run(":8083")
}

可以通过组件来拦截返回状态码

1
3
bobby
回复
难猿
如果你这里能正常运行就可以
2020-12-05
共3条回复

Go+Python打造电商系统 自研微服务框架 抓紧高薪机遇

快速转型Go工程师,成为具备双语言后端能力的开发者

508 学习 · 530 问题

查看课程