nodejs查询字符串格式需要如下参数:
foo[bar]=abc --> {foo:{bar:"abc"}}
角度$ http模块(以及任何依赖于它的东西,如ngresource),将params翻译如下
{foo:{bar:"abc"}} --> foo={bar:"abc"}
然后urlencodes上面的JSON。
有没有办法将params传递给$http
,以便将输出设为foo[bar]=abc
而不是foo={bar:"abc"}
?
BTW,将params设置为{"foo[bar]":"abc"}
可以正常工作,但它非常难看。
相反,有没有办法让节点查询字符串使用角度创建的foo={bar:"abc"}
的urlencoded版本并将其作为{foo:{bar:"abc"}}
呈现给节点端?
答案 0 :(得分:1)
我不是nodejs用户,但是nodejs几乎肯定会期待'真实' AJAX请求中的JSON。如果它期待
{"foo[bar]":"abc"}
我觉得有些事情设置不正确。
但是,如果您确实要转换所有请求的请求,则可以配置$ http。
在您的应用的配置方法中,使用$ httpProvider配置$ http,如下所示:
angular.module('myModule', []);
.config($httpProvider, function($httpProvider) {
$httpProvider.defaults.transformRequest = function(data) {
return transformMyData(data);
};
});
然后只需编写函数transformMyData(...)将其转换为您想要的格式。