GoFrame框架使用BindHandler设置路由失效的原因

API中

type ThumbsUpReq struct {
	g.Meta    `path:"/thumbsUp" tags:"资讯" method:"post" summary:"给评论点赞/取消点赞"`
	CommentId int `json:"comment_id" v:"required#评论ID不能为空" dc:"评论ID" example:"20"`
}

type ThumbsUpRes struct {
	GoodsNum  int64 `json:"goods_num" dc:"该评论的点赞数量"`
}

router中

s.BindHandler("/cccc", article.NewV1().ThumbsUp)

发现实际注册的路由地址是/thumbsUp而不是/cccc,也就是使用/thumbsUp可以访问,使用/cccc无法访问,是报错的。
查看ghttp包中的ghttp_server_router.go文件,约100-102行,会使用结构体标签中的path覆盖掉s.BindHandler方法注册的路由地址,所以生效的路由实际是/thumbsUp

if v := gmeta.Get(objectReq, gtag.Path); !v.IsEmpty() {
	uri = v.String()
}
posted @ 2025-08-21 10:57  代码小伙  阅读(5)  评论(0)    收藏  举报