beego 路由配置

参考网站
https://beego.me/docs/mvc/controller/router.md

固定路由

固定路由就是全匹配路由,如下

# 一个固定的路由,一个控制器
beego.Router("/", &controllers.MainController{})
beego.Router("/admin", &admin.UserController{})
beego.Router("/admin/index", &admin.ArticleController{})
beego.Router("/admin/addpkg", &admin.AddController{})
正则路由
- beego.Router(“/api/?:id”, &controllers.RController{})  
默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”

- beego.Router(“/api/:id”, &controllers.RController{})  
默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”,但URL”/api/“匹配失败

- beego.Router(“/api/:id([0-9]+)“, &controllers.RController{})  
自定义正则匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”

- beego.Router(“/user/:username([\\w]+)“, &controllers.RController{})  
正则字符串匹配 //例如对于URL”/user/astaxie”可以匹配成功,此时变量”:username”值为”astaxie”

- beego.Router(“/download/*.*”, &controllers.RController{})  
*匹配方式 //例如对于URL”/download/file/api.xml”可以匹配成功,此时变量”:path”值为”file/api”, “:ext”值为”xml”

- beego.Router(“/download/ceshi/*“, &controllers.RController{})  
*全匹配方式 //例如对于URL”/download/ceshi/file/api.json”可以匹配成功,此时变量”:splat”值为”file/api.json”

- beego.Router(“/:id:int”, &controllers.RController{})  
int 类型设置方式,匹配 :id为int 类型,框架帮你实现了正则 ([0-9]+)

- beego.Router(“/:hi:string”, &controllers.RController{})  
string 类型设置方式,匹配 :hi 为 string 类型。框架帮你实现了正则 ([\w]+)

- beego.Router(“/cms_:id([0-9]+).html”, &controllers.CmsController{})  
带有前缀的自定义正则 //匹配 :id 为正则类型。匹配 cms_123.html 这样的 url :id = 123 
自定义路由方法集RESTful

自定义函数名,那么可以使用如下方式:

beego.Router("/",&IndexController{},"*:Index")
使用第三个参数,第三个参数就是用来设置对应 method 到函数名,定义如下

*表示任意的 method 都执行该函数
使用 httpmethod:funcname 格式来展示
多个不同的格式使用 ; 分割
多个 method 对应同一个 funcname,method 之间通过 , 来分割

示例

# RESTful 的设计示例:
beego.Router("/api/list",&RestController{},"*:ListFood")
beego.Router("/api/create",&RestController{},"post:CreateFood")
beego.Router("/api/update",&RestController{},"put:UpdateFood")
beego.Router("/api/delete",&RestController{},"delete:DeleteFood")

# 多个 HTTP Method 指向同一个函数的示例:
beego.Router("/api",&RestController{},"get,post:ApiFunc")

# 不同的 method 对应不同的函数,通过 ; 进行分割的示例:
beego.Router("/simple",&SimpleController{},"get:GetFunc;post:PostFunc")

#可用的 HTTP Method:
*: 包含以下所有的函数
get: GET 请求
post: POST 请求
put: PUT 请求
delete: DELETE 请求
patch: PATCH 请求
options: OPTIONS 请求
head: HEAD 请求

自动匹配

用户首先需要把需要路由的控制器注册到自动路由中
beego.AutoRouter(&controllers.ObjectController{})
那么 beego 就会通过反射获取该结构体中所有的实现方法,你就可以通过如下的方式访问到对应的方法中:
/object/login   调用 ObjectController 中的 Login 方法
/object/logout  调用 ObjectController 中的 Logout 方法
固定路由

固定路由就是全匹配路由,如下

# 一个固定的路由,一个控制器
beego.Router("/", &controllers.MainController{})
beego.Router("/admin", &admin.UserController{})
beego.Router("/admin/index", &admin.ArticleController{})
beego.Router("/admin/addpkg", &admin.AddController{})
正则路由
- beego.Router(“/api/?:id”, &controllers.RController{})  
默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”

- beego.Router(“/api/:id”, &controllers.RController{})  
默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”,但URL”/api/“匹配失败

- beego.Router(“/api/:id([0-9]+)“, &controllers.RController{})  
自定义正则匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”

- beego.Router(“/user/:username([\\w]+)“, &controllers.RController{})  
正则字符串匹配 //例如对于URL”/user/astaxie”可以匹配成功,此时变量”:username”值为”astaxie”

- beego.Router(“/download/*.*”, &controllers.RController{})  
*匹配方式 //例如对于URL”/download/file/api.xml”可以匹配成功,此时变量”:path”值为”file/api”, “:ext”值为”xml”

- beego.Router(“/download/ceshi/*“, &controllers.RController{})  
*全匹配方式 //例如对于URL”/download/ceshi/file/api.json”可以匹配成功,此时变量”:splat”值为”file/api.json”

- beego.Router(“/:id:int”, &controllers.RController{})  
int 类型设置方式,匹配 :id为int 类型,框架帮你实现了正则 ([0-9]+)

- beego.Router(“/:hi:string”, &controllers.RController{})  
string 类型设置方式,匹配 :hi 为 string 类型。框架帮你实现了正则 ([\w]+)

- beego.Router(“/cms_:id([0-9]+).html”, &controllers.CmsController{})  
带有前缀的自定义正则 //匹配 :id 为正则类型。匹配 cms_123.html 这样的 url :id = 123 
自定义路由方法集RESTful

自定义函数名,那么可以使用如下方式:

beego.Router("/",&IndexController{},"*:Index")
使用第三个参数,第三个参数就是用来设置对应 method 到函数名,定义如下

*表示任意的 method 都执行该函数
使用 httpmethod:funcname 格式来展示
多个不同的格式使用 ; 分割
多个 method 对应同一个 funcname,method 之间通过 , 来分割

示例

# RESTful 的设计示例:
beego.Router("/api/list",&RestController{},"*:ListFood")
beego.Router("/api/create",&RestController{},"post:CreateFood")
beego.Router("/api/update",&RestController{},"put:UpdateFood")
beego.Router("/api/delete",&RestController{},"delete:DeleteFood")

# 多个 HTTP Method 指向同一个函数的示例:
beego.Router("/api",&RestController{},"get,post:ApiFunc")

# 不同的 method 对应不同的函数,通过 ; 进行分割的示例:
beego.Router("/simple",&SimpleController{},"get:GetFunc;post:PostFunc")

#可用的 HTTP Method:
*: 包含以下所有的函数
get: GET 请求
post: POST 请求
put: PUT 请求
delete: DELETE 请求
patch: PATCH 请求
options: OPTIONS 请求
head: HEAD 请求

自动匹配

用户首先需要把需要路由的控制器注册到自动路由中
beego.AutoRouter(&controllers.ObjectController{})
那么 beego 就会通过反射获取该结构体中所有的实现方法,你就可以通过如下的方式访问到对应的方法中:
/object/login   调用 ObjectController 中的 Login 方法
/object/logout  调用 ObjectController 中的 Logout 方法
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值