有没有办法让angular $ http params匹配nodejs查询字符串格式?或者让节点查询字符串使用角度格式?

时间:2014-11-12 03:32:27

标签: angularjs node.js express query-string angular-http

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"}}呈现给节点端?

1 个答案:

答案 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(...)将其转换为您想要的格式。