Я работаю с удобными методами Beego для анализа значений тела запроса и имею следующее:
Файл роутера:
apiNamespace := beego.NewNamespace("/api")
apiNamespace.Router("/sessions/google/new", &controllers.SessionsController{}, "get:GoogleNewSession")
beego.AddNamespace(apiNamespace)
Код контроллера:
func (c *SessionsController) URLMapping() {
c.Mapping("GoogleNewSession", c.GoogleNewSession)
}
func (c *SessionsController) GoogleNewSession() {
// Always serve JSON
defer func() {
c.ServeJson()
}()
// This is always blank
log.Printf("'Received %+v'", c.Ctx.Input.RequestBody)
c.Ctx.ResponseWriter.WriteHeader(200)
return
// truncated
}
Фронтенд JS (суперагент):
request
.post('/sessions/google/new')
.use(prefix)
.send({ code: authCode })
.set('Accept', 'application/json')
.end(function(err, res){
console.log("******* request", res.request)
if (res.ok) {
var body = res.body;
console.log('yay got ' + JSON.stringify(res.body));
} else {
console.log("***** err", err);
console.log("***** not ok", res.text);
}
});
Когда запрос суперагента срабатывает, я вижу в журналах, что путь сопоставляется правильно. Однако c.Ctx.Input.RequestBody
всегда пуст.
Я пытался использовать что-то еще, чтобы запустить запрос, например Postman, но безрезультатно. В запросах GET я могу правильно получить параметры запроса.
Любые подсказки или предложения, которые помогут исправить или отладить эту проблему?
Received []
? - person Jiang YD   schedule 24.06.2015.set('Content-Type', 'application/x-www-form-urlencoded')
, и я могу получить поля в файлеc.Ctx.Input.Request.Form.Get("code")
. Любая идея, почему это так? - person nightscent   schedule 25.06.2015.set('Accept', 'application/json')
, но неContent-Type
. - person Jiang YD   schedule 26.06.2015