ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 什么是url反转: * 动态构建url,就是根据方法名生成对应的url,原来是通过url找到对应的方法,现在我们要通过方法找到对应的url,这就是url反转 ## URLFor实现url反转的好处: * url改变不需要跟着改代码 ## 示例代码: ~~~ 控制层: ​ type TestController struct {   beego.Controller } ​ func (g *TestController)Get() {   g.TplName = "test.html" } ​ func (l *TestController)List() {   fmt.Println(beego.URLFor("TestController.Get"))     // 在list中反转get的url   l.TplName = "test_list.html" } ​ ​ 路由: ​ beego.AutoRouter(&controllers.TestController{})       // 自动路由, ​ ​ 访问: ​ list的访问:http://127.0.0.1:8090/test/list         //   /控制器名/方法名 ​ get的访问:http://127.0.0.1:8090/test/get ​ ​ 检查: 看看访问list方法的时候是不是打印了get的url,如果打印/test/get则正常 ​ ​ 路由如果只设置了自动路由,则只能通过/控制器名/方法名来访问,我们可以多定义个固定路由来指定访问的url: beego.Router("/test",&controllers.TestController{}) beego.Router("/test_list",&controllers.TestController{},"*:List") ​ 这样就可以通过自动路由和固定路由都能访问了: http://127.0.0.1:8090/test_list       // 固定路由 http://127.0.0.1:8090/test/list       // 自动路由 ~~~ ## 模板中使用url反转:{ {urlfor "TestController.List"} } ~~~ get页面: 这是test页面<br> <a href="{{urlfor "TestController.List"}}">跳转到列表页</a> ​ ​ list页面: 这是列表页 ~~~ ## 带参数的url反转: 我们需要反转成这样:/test/get?:id=123 ~~~ beego.URLFor("TestController.Get",":id", "123")   // 参数名,值 多个用逗号隔开 ​ beego.URLFor("TestController.Get",":id", "123",":name","zhiliao") ~~~