Beego獲取http請求內容詳細介紹
beego是一個使用 Golang 來設計的快速構建並開發 Go 應用程式的開源http框架,可以快速開發API、Web、後端服務等各種應用,功能支援RESTFul,MVC模型;含有智慧路由,內建強大模組,採用了 Go 原生的 http 包來處理請求;goroutine 的併發效率足以應付大流量的 Web 應用和 API 應用等等,簡單易用,功能強大。
本文主要介紹beego框架獲取http請求的一些介紹及注意事項。
獲取引數
經常需要獲取使用者傳遞的資料,包括 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)
使用使用者資訊驗證例子分別採用Get、Post方法舉例如下:
在models中定義返回結構,其中code 含義 1 成功 0 失敗
type GeneralResp struct { Code int `json:"code"` Data interface{} `json:"data"` Error string `json:"error"` }
使用Get方法實現使用者資訊驗證介面
func (this *MainController) Login() { userName := this.GetString("username") passWord := this.GetString("password") ret := tools.LoginMsgCheck(userName,passWord)//登入資訊驗證 if ret == true { this.Data["json"] = models.GeneralResp{Code: 1} }else{ this.Data["json"] = models.GeneralResp{Code: 0, Error: err.Error()} } this.ServeJSON() }
如果你需要的資料可能是其他型別的,例如是 int 型別而不是 int64,那麼你需要這樣處理:
func (this *MainController) Get() {
id := this.Input().Get("id")
intid, err := strconv.Atoi(id)
}
再使用Post方法完成使用者資訊驗證介面
在models中定義UserInfo結構
type UserInfo struct {
UserName string `json:"username"`
Password string `json:"password"`
}
Post方法實現使用者資訊驗證介面
func (this *MainController) Login(){
var userInfo models.UserInfo
err := json.Unmarshal(this.Ctx.Input.RequestBody, &userInfo )
if err != nil {
this.Data["json"] = models.GeneralResp{Code: 0, Error: err.Error()}
this.ServeJSON()
return
}
ret := tools.LoginMsgCheck(userInfo.UserName,userInfo.PassWord)//登入資訊驗證
if ret == true {
this.Data["json"] = models.GeneralResp{Code: 1}
}else{
this.Data["json"] = models.GeneralResp{Code: 0, Error: err.Error()}
}
this.ServeJSON()
}
更多其他的 request 的資訊,使用者可以通過 this.Ctx.Request 獲取資訊,關於該物件的屬性和方法參考手冊Request。
獲取 Request Body 裡的內容
在 API 的開發中,經常會用到 JSON 或 XML 來作為資料互動的格式,如何在 beego 中獲取 Request Body 裡的 JSON 或 XML 的資料呢?
1、在配置檔案裡設定 copyrequestbody = true
2、在 Controller 中
func (this *ObejctController) Post() {
var ob models.Object
json.Unmarshal(this.Ctx.Input.RequestBody, &ob)
objectid := models.AddOne(ob)
this.Data["json"] = "{\"ObjectId\":\"" + objectid + "\"}"
this.ServeJson()
}
注意事項
配置檔案中一定要加copyrequestbody = true
否則會列印錯誤資訊:SyntaxError: Unexpected end of JSON input
如有不對歡迎指正,相互學習,共同進步。