LoginSignup
5
4

More than 5 years have passed since last update.

Beego を触ってみる (Controller/Router)

Last updated at Posted at 2014-08-31

独自の 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が取得できていることが確認できる。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4