beego 注解路由


場景描述:使用注解路由,不起作用。

額外描述:

路由的添加都寫在 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM