独自の Controller を作成する
Controller は controllers
配下に配置する。
とりあえず適当に空の Controller を作成してみる。
また、合わせて中身適当な views/users/index.tpl を配置しておく。
users.go
package controllers
import (
"github.com/astaxie/beego"
)
type UsersController struct {
beego.Controller
}
func (this *UsersController) Get() {
this.TplNames = "users/index.tpl"
}
ルーティングの設定を行う
/users/ にアクセスすると、作成したコントローラが動作するようにルーティングの設定を行う。
ルーティングの設定は routes/router.go に記述する。
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/users/", &controllers.UsersController{})
}
変更後、http://localhost:8080/users/ にアクセス可能なことを確認する。
その他のルーティングの設定について
Beego では上記以外にも様々なルーティング設定の方法がある。(詳細はこちら)
例として、アノテーションによるルーティング設定を試してみる。
UsersController を以下のように修正する。
// @router /users/ [get]
// @router /users/index [get]
func (this *UsersController) Get() {
this.TplNames = "users/index.tpl"
}
続けて router.go を以下のように修正する。
func init() {
beego.Router("/", &controllers.MainController{})
beego.Include(&controllers.UsersController{})
}
変更後、http://localhost:8080/users/ と http://localhost:8080/users/index にアクセス可能なことが確認できる。
URLパラメータを受け取る
/users/show/(ID) といった URL から ID を抽出してみる。
UsersController に新たに Show を追加する。 (本来は Controller を分けるべきだがサンプルなので)
// @router /users/show/:id [get]
func (this *UsersController) Show() {
this.Data["ID"] = this.Ctx.Input.Param(":id")
this.TplNames = "users/show.tpl"
}
views/users/show.tpl を追加する。
ID: {{.ID}}
http://localhost:8080/users/show/1 とアクセスすると、IDが取得できていることが確認できる。