(七)Beego控制器之響應請求
阿新 • • 發佈:2022-05-08
我們處理完使用者的請求之後,通常我們都會返回html程式碼,然後瀏覽器就可以顯示html內容;除了返回html,在api介面開發中,我們還可以返回json、xml、jsonp格式的資料。
下面分別介紹beego返回不同資料型別的處理方式。
注意:如果使用beego開發api,那麼在app.conf中設定AutoRender = false, 禁止自動渲染模板,否則beego每次處理請求都會嘗試渲染模板,如果模板不存在則報錯。
一、返回json資料
下面是返回json資料的例子:
// 定義struct // 如果struct欄位名跟json欄位名不一樣,可以使用json標籤,指定json欄位名 type User struct { // - 表示忽略id欄位 Id int `json:"-"` Username string `json:"name"` Phone string } func (this *UserController) Get() { // 定義需要返回給客戶端的資料 user := User{1, "tizi365", "13089818901"} // 將需要返回的資料賦值給json欄位 this.Data["json"] = &user // 將this.Data["json"]的資料,序列化成json字串,然後返回給客戶端 this.ServeJSON() }
提示:請參考Go處理json資料教程,瞭解詳細的json資料處理方式。
二、返回XML資料
下面是返回xml資料的處理方式跟json類似。
例子:
// 定義struct // 如果struct欄位名跟xml欄位名不一樣,可以使用xml標籤,指定xml欄位名 type User struct { // - 表示忽略id欄位 Id int `xml:"-"` Username string `xml:"name"` Phone string } func (this *UserController) Get() { // 定義需要返回給客戶端的資料 user := User{1, "tizi365", "13089818901"} // 將需要返回的資料賦值給xml欄位 this.Data["xml"] = &user // 將this.Data["xml"]的資料,序列化成xml字串,然後返回給客戶端 this.ServeXML() }
提示:請參考Go處理xml資料教程,瞭解詳細的xml資料處理方式。
三、返回jsonp資料
返回jsonp資料,於返回json資料方式類似。
例子:
func (this *UserController) Get() { // 定義需要返回給客戶端的資料 user := User{1, "tizi365", "13089818901"} // 將需要返回的資料賦值給jsonp欄位 this.Data["jsonp"] = &user // 將this.Data["json"]的資料,序列化成json字串,然後返回給客戶端 this.ServeJSONP() }
4.返回html
如果我們開發的是網頁,那麼通常需要返回html程式碼,在beego專案中關於html檢視部分,使用的是模板引擎技術,渲染html,然後將結果返回給瀏覽器。
例子:
func (c *MainController) Get() {
// 設定模板引數
c.Data["Website"] = "tizi365.com"
c.Data["Email"] = "[email protected]"
// 需要渲染的模板, beego會渲染這個模板,然後返回結果
c.TplName = "index.tpl"
}
5.新增響應頭
為http請求新增header
func (c *MainController) Get() {
// 通過this.Ctx.Output.Header設定響應頭
this.Ctx.Output.Header("Content-Type", "message/http")
this.Ctx.Output.Header("Cache-Control", "no-cache, no-store, must-revalidate")
}
提示:後續會有關於beego檢視開發的詳細的教程。