場景描述:使用注解路由,不起作用。
額外描述:
路由的添加都寫在 main函數中了,同時未設置
beego.BConfig.RunMode ="dev"
也未引入 :
routers包的初始化操作
其官網描述:
http://beego.me/docs/mvc/controller/router.md
應用中的大多數路由都會定義在 routers/router.go 文件中
從beego1.3版本開始支持了注解路由,用戶無需在router中注冊路由,只需要Include相應地controller,
然后在controller的method方法上面寫上router注釋(// @router)就可以了,詳細的使用請看下面的例子:
// CMS API
type CMSController struct {
beego.Controller
}
func (c *CMSController) URLMapping() {
c.Mapping("StaticBlock", c.StaticBlock)
c.Mapping("AllBlock", c.AllBlock)
}
// @router /staticblock/:key [get]
func (this *CMSController) StaticBlock() {
}
// @router /all/:key [get]
func (this *CMSController) AllBlock() {
this.Ctx.WriteString("CMSController/all")
}
可以在router.go中通過如下方式注冊路由:
beego.Include(&CMSController{})
beego自動會進行源碼分析,注意只會在dev模式下進行生成,生成的路由放在“/routers/commentsRouter.go”文件中。
這樣上面的路由就支持了如下的路由:
GET /staticblock/:key
GET /all/:key
其實效果和自己通過Router函數注冊是一樣的:
beego.Router("/staticblock/:key", &CMSController{}, "get:StaticBlock")
beego.Router("/all/:key", &CMSController{}, "get:AllBlock")
同時大家注意到新版本里面增加了URLMapping這個函數,這是新增加的函數,
用戶如果沒有進行注冊,那么就會通過反射來執行對應的函數,如果注冊了就會通過interface來進行執行函數,性能上面會提升很多。
————————————————
版權聲明:本文為CSDN博主「ribavnu」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/ribavnu/article/details/52490594