Функциональность синтаксиса Beego 'Ctx.Input.GetData('‹имя-переменной›')'

Я новичок в beego и goLang. Я наткнулся на код. Если бы кто-то мог объяснить поток, это было бы очень полезно. Это ПОЛУЧИТЬ API. Я думаю, что Prepare() похож на фильтр. Чего я не понимаю, так это функций c.Ctx.Input.GetData("customerid") и c.Ctx.Input.GetData("customergroupid"). Может ли кто-нибудь объяснить мне, что делает GetData и как мы можем передавать им значения?

// URLMapping ...
func (c *CampusHomeController) URLMapping() {
    c.Mapping("GetOne", c.GetOne)
}
func (c *CampusHomeController) Prepare() {
    if c.Ctx.Input.GetData("customerid") == "" {
        returnJSON := postCampusHomeJSON{}
        returnJSON.Code = 403
        returnJSON.Msg = "Invalid Session"
        c.Data["json"] = &returnJSON
        c.ServeJSON()
        c.StopRun()
    }

    if c.Ctx.Input.GetData("customergroupid") == "" ||             
        c.Ctx.Input.GetData("customergroupid") == nil {

        returnJSON := postCampusHomeJSON{}
        returnJSON.Code = 404
        returnJSON.Msg = "User not a campus manager"
        c.Data["json"] = &returnJSON
        c.ServeJSON()
        c.StopRun()
    }
}

person Karthik    schedule 16.05.2018    source источник


Ответы (1)


GetData используется для получения данных из фильтров в ваших контроллерах. Он позволяет передавать значения, отличные от строк.

Из документации Beego: GetData Получить значение данных на входе

SetData Установить значение данных на входе. GetData и SetData используются для передачи данных от фильтра к контроллеру https://beego.me/docs/module/context.md

person Marc Harry    schedule 16.05.2018
comment
Таким образом, фильтр — это параметры, которые передаются через URL-адрес, например /cm/profile?customergroupid=14? - person Karthik; 17.05.2018
comment
Ни один фильтр не похож на промежуточное ПО в других веб-фреймворках. Что-то, что может выполняться до того, как будет выполнено основное тело вызова API, поэтому идентификатор customergroupid можно найти в фильтре, добавленном к ctx.Input, с помощью метода SetData. А затем получен в вызове API с помощью ctx.Input.GetData. Документация по фильтрам: beego.me/docs/mvc/controller/filter.md - person Marc Harry; 22.05.2018