我是beego框架的初学者,我在里面完成了一些研发。但我需要很少的帮助相关的路由器。
我用中间件和组路由器创建了一些路由,但我需要专家的一些建议。
让我分享一下我做过的例子。
路由器.go
func init() {
ns := beego.NewNamespace("/api/v1",
beego.NSNamespace("/front",
beego.NSBefore(AuthFilter),
beego.NSRouter("/user",&controllers.ObjectController{},"*:GetValueByAdmin"),
beego.NSRouter("/test",&controllers.ObjectController{},"*:GetValueByAdmin"),
beego.NSRouter("/test",&controllers.ObjectController{},"*:GetValueByAdmin"),
beego.NSRouter("/test",&controllers.ObjectController{},"*:GetValueByAdmin"),
beego.NSRouter("/product",&controllers.ObjectController{},"*:GetValueByAdmin"),
),
beego.NSNamespace("/a1",
beego.NSRouter("/test1",&controllers.ObjectController{},"*:GetValueByAdmin1"),
beego.NSRouter("/test2",&controllers.ObjectController{},"*:GetValueByAdmin1"),
beego.NSInclude(
&controllers.UserController{},
),
),
)
beego.AddNamespace(ns)
}
var AuthFilter = func(ctx *context.Context) {
// The Authorization header should come in this format: Bearer <jwt>
// The first thing we do is check that the JWT exists
header := strings.Split(ctx.Input.Header("Authorization"), " ")
if header[0] != "Bearer" {
ctx.Abort(401, "Not authorized")
}
}
我已经使用命名空间创建了路由器,并且使用此 url ( http://localhost:8080/api/v1/front/test ) 可以正常工作。但我想从 URL 中删除“front”关键字。
我尝试了以下选项,例如:
我将“Front”命名空间内的代码复制到外面,但我的“NSBefore”将应用之后定义的所有方法。我需要2组。授权前和授权后。在经过身份验证后,我想添加
beego.NSBefore(AuthFilter)
.我尝试使用策略,但它不能按我的需要工作。
beego.Policy("/api/v1/front/*","*", AuthFilter)
beego.Policy("/api/v1/admin/*","*", AuthFilter)
如果我将从策略中删除前面,那么它将应用所有 URL。
我们是否有任何选项可以创建没有 URL 路径的组路由器,它会涵盖我的概念?