我正在使用FosRestBundle和AngularJS的API进行前端部署。
GET请求正常工作但我遇到POST请求问题。在API控制器中,请求对象为空..
这是前面部分
$http.post(Route.api + '/leads', {lead: "test"}).success(function(data) {
});
这是FosRestBundle控制器
public function postAction(Request $request) {
var_dump($request->request->all()); // empty ? :(
}
有人已经遇到同样的问题吗?
谢谢;)
答案 0 :(得分:1)
是的,我有这样的问题,我已经解决了这个问题,将Content-Type
标题传递给Symfony,这是我的代码示例
return $http({
method: 'POST',
url: Route.api + '/leads',
data: dataYouWantToSend, //see the note regarding this parameter
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
注意:
如果您通过对象传递data
参数,您将通过JSON使用JSON根的密钥在POST中接收您的数据。
如果你想像表单数据那样接收它,你必须将它转换为querystring(例如?deal = test& ok = 1),例如,如果你也使用jQuery,你可以像这样转换它
var dataYouWantToSendQueryString = $.param(dataYouWantToSend);
希望它也能帮助你。
P.S。我已经研究过,还没有找到如何将对象转换为角度的查询字符串,所以如果Angular有这样的功能,我很高兴知道它,如果有人知道,请发表评论。