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来进行执行函数,性能上面会提升很多。



### ThinkPHP6 中使用注解定义路由的方法 在ThinkPHP6中,可以利用注解的方式简化路由的定义过程。这种方式不仅提高了代码的可读性和维护性,还使得开发者能够更加直观地理解请求与处理逻辑之间的映射关系。 为了实现基于注解路由配置,在控制器类或者其方法上添加特定格式的注释即可完成路由规则设定。具体来说: 对于单个动作(Action),可以在对应的方法上方声明`@Route`标签,并指定HTTP动词以及匹配路径。例如,如果希望为某个GET请求建立一条通往`User::read()`函数的路由,则应该这样写[^1]: ```php <?php namespace app\controller; use think\Request; use think\facade\Route; class UserController { /** * @Route("user/read/:id", method="get") */ public function read($id){ // 处理业务逻辑... } } ``` 上述例子表明当接收到形如`/user/read/{任意合法ID}`形式的GET请求时,将会调用`UserController->read()`来进行响应处理;其中`:id`部分表示该位置参数会被自动解析并传递给目标方法作为实参。 另外一种常见场景是在整个控制器级别应用公共前缀或中间件等特性。此时只需把相应指令放置于类级别的文档块之中即可生效。比如要让所有隶属于当前Controller的动作都带有统一的基础URI `/api/v1/user/*`, 可以这样做[^4]: ```php <?php /** * @Controller(prefix="/api/v1/user") */ class UserController { /** * @Route("/info",method="post") */ public function info(){ // POST /api/v1/user/info 的处理器 } /** * @Route("/list",method="get") */ public function listUsers(){ // GET /api/v1/user/list 的处理器 } } ``` 值得注意的是,虽然注解提供了极大的灵活性,但在实际项目开发过程中仍需遵循一定的编码规范,确保团队成员之间的一致理解和协作效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值