AngularJS:装饰$ http

Chr*_*ian 6 javascript ajax angularjs

我有一个简单的控制器,如:

function MyController($scope, $http) {
    ...
    $http.post(url).success(function(data) {
            console.log(data)
         });
}
MyController.$inject = ['$scope', '$http'];
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作,但我有一个问题.出于安全原因,返回的JSON用/***/注释.使用jQuery,我扩展了$ .ajax对象以删除此注释,然后解析结果.我想用AngularJS实现同样的目的,并以某种方式告诉$ http来删除每个响应中的注释.我想为我的整个应用程序执行此操作,并避免键入始终相同.

我有什么想法可以做到这一点?

Noa*_*tas 7

您将要转换所有$http回复.我之前没有这样做,但相关文档如下.

转换请求和响应

可以使用变换函数来变换请求和响应.默认情况下,Angular应用这些转换:

请求转换:

  • 如果请求配置对象的data属性包含对象,请将其序列化为JSON格式.

响应转换:

  • 如果检测到XSRF前缀,请将其删除(请参阅下面的"安全注意事项"部分)
  • 如果检测到json响应,则使用JSON解析器对其进行反序列化

要在本地覆盖这些转换,请将转换函数指定为配置对象的transformRequest和/或transformResponse属性.要全局覆盖默认转换,请覆盖$ httpProvider的$ httpProvider.defaults.transformRequest和$ httpProvider.defaults.transformResponse属性.

阅读服务文档中的更多$http内容.