Controller
Controller等同于Django裡的view,處理邏輯都是在Controller裡面完成的,下面就寫一個最簡單的Controller。
我們在寫自己的controller的時候,一定要繼承beego.Controller,也一定要記得導入
github.com/astaxie/beego
開始動手
- 我們先在router/router.go裡面添加一條路由,路由指向我們自己的目錄,
beego.Router("/test", &controllers.TestContronller{}, "get:SelfTest")
- 然後在controllers目錄下建立一個test.go檔案,檔案代碼如下:
// test
package controllers // 包一定是這個名
import (
"github.com/astaxie/beego"
)
type TestContronller struct {
beego.Controller
}
func (c *TestContronller) SelfTest() {
c.Ctx.WriteString("this is myself controller!")
}
注意這個package 必須是controllers,建立的話一般都是main,是以記得修改。
然後我們重新開機下beeGo,通路http://127.0.0.1/test 就可以看到我們自己傳回的内容了。
擷取使用者請求資料的方法
使用者通常通過Get,Post等方式來發送資料,beeGo裡面會自動解析這些資料,我們可以用下面這些方法來處理。
- GetString(key string) string
- GetStrings(key string) []string
- GetInt(key string) (int64,error)
- GetBool(key string)(bool,error)
- GetFloat(key string)(float64,error)
小試身手
GetString
我們先從GetString 這個方法來做:
1 先在router.go加上對應的路由規則
beego.Router("/getdata", &controllers.TestContronller{}, "get:GetData")
2 然後在controllers/test.go裡面寫上自己的代碼,
package controllers
import (
"github.com/astaxie/beego"
)
type TestContronller struct {
beego.Controller
}
func (c *TestContronller) GetData() {
id := c.GetString("id")
c.Ctx.WriteString(id)
name := c.Input().Get("name")
c.Ctx.WriteString(name)
}
代碼寫完後重新開機,此時,我們通路 http://127.0.0.1/getdata?id=hehe&name=lisis 那麼頁面就會顯示 hehe lisis