## URL 構建
如果可以匹配 URL ,那么 beego 也可以生成 URL 嗎?當然可以。 UrlFor() 函數就是用于構建指定函數的 URL 的。它把對應控制器和函數名結合的字符串作為第一個參數,其余參數對應 URL 中的變量。未知變量將添加到 URL 中作為查詢參數。 例如:
下面定義了一個相應的控制器
```
type TestController struct {
beego.Controller
}
func (this *TestController) Get() {
this.Data["Username"] = "astaxie"
this.Ctx.Output.Body([]byte("ok"))
}
func (this *TestController) List() {
this.Ctx.Output.Body([]byte("i am list"))
}
func (this *TestController) Params() {
this.Ctx.Output.Body([]byte(this.Ctx.Input.Params()["0"] + this.Ctx.Input.Params()["1"] + this.Ctx.Input.Params()["2"]))
}
func (this *TestController) Myext() {
this.Ctx.Output.Body([]byte(this.Ctx.Input.Param(":ext")))
}
func (this *TestController) GetUrl() {
this.Ctx.Output.Body([]byte(this.UrlFor(".Myext")))
}
```
下面是我們注冊的路由:
```
beego.Router("/api/list", &TestController{}, "*:List")
beego.Router("/person/:last/:first", &TestController{})
beego.AutoRouter(&TestController{})
```
那么通過方式可以獲取相應的URL地址:
```
beego.URLFor("TestController.List")
// 輸出 /api/list
beego.URLFor("TestController.Get", ":last", "xie", ":first", "asta")
// 輸出 /person/xie/asta
beego.URLFor("TestController.Myext")
// 輸出 /Test/Myext
beego.URLFor("TestController.GetUrl")
// 輸出 /Test/GetUrl
```
## 模板中如何使用
默認情況下,beego 已經注冊了 urlfor 函數,用戶可以通過如下的代碼進行調用
{{urlfor "TestController.List"}}
為什么不在把 URL 寫死在模板中,反而要動態構建?有兩個很好的理由:
1. 反向解析通常比硬編碼 URL 更直觀。同時,更重要的是你可以只在一個地方改變 URL ,而不用到處亂找。
2. URL 創建會為你處理特殊字符的轉義和 Unicode 數據,不用你操心。
- beego簡介
- 為 beego 貢獻
- 發布版本
- 升級指南
- beego安裝升級
- Bee 工具的使用
- 快速入門
- 新建項目
- 路由設置
- Controller 運行機制
- model 邏輯
- view 編寫
- 靜態文件處理
- beego 的 MVC 架構介紹
- controller 設計
- 參數配置
- 路由設置
- 控制器函數
- XSRF 過濾
- 請求數據處理
- session 控制
- 過濾器
- flash 數據
- URL構建
- 多種格式數據輸出
- 表單數據驗證
- 錯誤處理
- 日志處理
- model設計
- 概述
- ORM 使用
- CRUD 操作
- 高級查詢
- 原生 SQL 查詢
- 構造查詢
- 事務處理
- 模型定義
- 命令模式
- 測試用例
- 自定義字段
- FAQ
- view 設計
- 模板語法指南
- 模板處理
- 模板函數
- 靜態文件處理
- 模板分頁處理
- beego 的模塊設計
- session 模塊
- grace 模塊
- cache 模塊
- logs 模塊
- httplib 模塊
- context 模塊
- toolbox 模塊
- config 模塊
- i18n 模塊
- beego 高級編程
- 進程內監控
- API 自動化文檔
- 應用部署
- 獨立部署
- supervisor 部署
- Nginx 部署
- apache 部署
- beego 第三方庫
- 應用例子
- 在線聊天室
- 短域名服務
- Todo 列表
- beego實用庫
- 驗證碼
- 分頁
- FAQ