Я работаю с удобными методами Beego для разбора значений тела запроса и следующее:тела запроса Beego POST всегда пустой
файл маршрутизатор:
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
всегда пуст.
Я попытался использовать что-то еще, чтобы запустить запрос, такой как почтальон, но безрезультатно. В запросах GET я могу правильно получить параметры запроса.
Любые подсказки или рекомендации по исправлению или отладке этой проблемы?
вы можете сделать захват HTTP, чтобы убедиться, что тело запроса не пусто? –
heyo, как вы предлагаете мне это сделать? В консоли Chrome для разработчиков Chrome я проверил, что тело включает полезную нагрузку, например {"code": "123"}, но при печати всего запроса на Beego он пуст :( – nightscent
, так что вы получили print 'Received []'? –