beego擷取使用者請求參數的方法

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

擷取參數

我們經常需要擷取使用者傳遞的資料,包括 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)

使用例子如下:

func (this *MainController) Post() {    jsoninfo := this.GetString("jsoninfo")    if jsoninfo == "" {        this.Ctx.WriteString("jsoninfo is empty")        return    }}

如果你需要的資料可能是其他類型的,例如是 int 類型而不是 int64,那麼你需要這樣處理:

func (this *MainController) Post() {    id := this.Input().Get("id")    intid, err := strconv.Atoi(id)}

更多其他的 request 的資訊,使用者可以通過 this.Ctx.Request 擷取資訊,關於該對象的屬性和方法參考手冊Request。

直接解析到 struct

如果要把表單裡的內容賦值到一個 struct 裡,除了用上面的方法一個一個擷取再賦值外,beego 提供了通過另外一個更便捷的方式,就是通過 struct 的欄位名或 tag 與表單欄位對應直接解析到 struct。

定義struct:

type user struct {    Id    int         `form:"-"`    Name  interface{} `form:"username"`  //對應表單中的name值,欄位名首字母也必須大寫,否則無法解析該參數的值    Age   int         `form:"age"`//對應表單中的name值,如果不寫將無法解析該參數的值    Email string}

表單:

<form id="user">    名字:<input name="username" type="text" />    年齡:<input name="age" type="text" />    郵箱:<input name="Email" type="text" />    <input type="submit" value="提交" /></form>

Controller 裡解析:

func (this *MainController) Post() {    u := user{}    if err := this.ParseForm(&u); err != nil {        //handle error    }}

注意:

  • StructTag form 的定義和 renderform方法 共用一個標籤
  • 定義 struct 時,欄位名後如果有 form 這個 tag,則會以把 form 表單裡的 name 和 tag 的名稱一樣的欄位賦值給這個欄位,否則就會把 form 表單裡與欄位名一樣的表單內容賦值給這個欄位。如上面例子中,會把表單中的 username 和 age 分別賦值給 user 裡的 Name 和 Age 欄位,而 Email 裡的內容則會賦給 Email 這個欄位。
  • 調用 Controller ParseForm 這個方法的時候,傳入的參數必須為一個 struct 的指標,否則對 struct 的賦值不會成功並返回xx must be a struct pointer 的錯誤。
  • 如果要忽略一個欄位,有兩種辦法,一是:欄位名小寫開頭,二是:form 標籤的值設定為 -

原文地址:https://beego.me/docs/mvc/controller/params.md

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.