news 2026/9/20 9:32:45

gin打印注册的路由

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
gin打印注册的路由

明白了,你是想在 Gin 启动时打印出所有已注册的路由列表(比如类似[GIN-debug] GET /api/users/:id这样的输出)。

Gin 本身在gin.Default()模式下会自动打印路由信息,但如果你想自定义格式(比如输出成 JSON、表格,或者写入日志文件),可以通过覆盖gin.DebugPrintRouteFunc来实现。

方法一:自定义路由打印格式(推荐)

r.Run()之前设置gin.DebugPrintRouteFunc

package main import ( "fmt" "log" "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() // 自定义路由打印格式 gin.DebugPrintRouteFunc = func(httpMethod, absolutePath, handlerName string, nuHandlers int) { // 你可以改成任何你喜欢的格式,比如 JSON、表格等 log.Printf("[ROUTE] %-6s %-30s --> %s (%d handlers)", httpMethod, absolutePath, handlerName, nuHandlers) } r.GET("/api/users/:id", getUser) r.POST("/api/users", createUser) r.PUT("/api/users/:id", updateUser) r.DELETE("/api/users/:id", deleteUser) r.Run(":8080") }

启动后输出类似:

2026/09/20 10:00:00 [ROUTE] GET /api/users/:id --> main.getUser (3 handlers) 2026/09/20 10:00:00 [ROUTE] POST /api/users --> main.createUser (3 handlers) 2026/09/20 10:00:00 [ROUTE] PUT /api/users/:id --> main.updateUser (3 handlers) 2026/09/20 10:00:00 [ROUTE] DELETE /api/users/:id --> main.deleteUser (3 handlers)

方法二:输出为 JSON 格式(方便日志收集)

gin.DebugPrintRouteFunc = func(httpMethod, absolutePath, handlerName string, nuHandlers int) { type RouteInfo struct { Method string `json:"method"` Path string `json:"path"` HandlerName string `json:"handler_name"` Handlers int `json:"handlers_count"` } info := RouteInfo{ Method: httpMethod, Path: absolutePath, HandlerName: handlerName, Handlers: nuHandlers, } data, _ := json.Marshal(info) fmt.Println(string(data)) }

输出:

{"method":"GET","path":"/api/users/:id","handler_name":"main.getUser","handlers_count":3}

方法三:收集所有路由到切片(运行时查询)

如果你想在程序运行时动态获取所有已注册的路由(比如提供一个/debug/routes接口),可以遍历r.Routes()

func main() { r := gin.Default() r.GET("/api/users/:id", getUser) r.POST("/api/users", createUser) // 提供一个调试接口,返回所有已注册路由 r.GET("/debug/routes", func(c *gin.Context) { routes := r.Routes() // 返回 []gin.RouteInfo c.JSON(200, routes) }) r.Run(":8080") }

访问http://localhost:8080/debug/routes会得到:

[ { "Method": "GET", "Path": "/api/users/:id", "Handler": "main.getUser" }, { "Method": "POST", "Path": "/api/users", "Handler": "main.createUser" }, { "Method": "GET", "Path": "/debug/routes", "Handler": "main.main.func1" } ]

总结

需求方法
启动时自定义格式打印覆盖gin.DebugPrintRouteFunc
运行时动态获取路由列表使用r.Routes()
默认打印(无需自定义)使用gin.Default()即可,会自动输出

你具体是想在哪个场景下打印?启动日志、调试接口、还是写入日志文件?我可以帮你进一步调整。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 9:30:29

深入理解LLVM:从中间表示到编译器工具链的完整解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 9:29:49

AgentWriter 拆 plan/write 长文管道,Base URL 填 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 9:29:10

ComfyUI-Workflows-ZHO:16 个即插即用的 AI 绘图工作流合集

ComfyUI-Workflows-ZHO:16 个即插即用的 AI 绘图工作流合集 【免费下载链接】ComfyUI-Workflows-ZHO 我的 ComfyUI 工作流合集 | My ComfyUI workflows collection 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-Workflows-ZHO ComfyUI-Workflo…

作者头像 李华
网站建设 2026/9/20 9:28:22

羽毛球目标检测数据集实战:从YOLO训练到三格式转换

1. 一个人工智能项目,为什么非要从“数据集”讲起拿到这个标题的时候,我第一个反应是:这不就是又一份“标注好的目标检测数据集”吗?但仔细一看,2879张图、识别率84.4%、三格式全支持(yolo、coco json、voc…

作者头像 李华