提供者使用$ http wrapper angularjs

时间:2014-05-30 03:52:17

标签: angularjs http wrapper provider

我想知道我们是否可以在angularjs中创建一个将取代$ http操作的提供程序。这意味着我们可以在其他模块中使用此提供程序,我们可以使用这些$ http操作。 必须采用提供者的原因是因为我们可以配置http参数,如api路径,请求类型。

我们也可以在提供程序中使用日志/异常处理机制,以便继承提供程序的模块(例如:任何其他工厂)不需要执行任何额外的日志记录/异常机制。 在发出http请求时,是否有任何方法可以使用此提供程序进行加载?

1 个答案:

答案 0 :(得分:4)

对于您提到的内容,您不需要其他提供商,因为 $http 具有拦截器的概念。

拦截器可以指定在不同阶段执行的不同回调:

  • 请求(在发送任何请求之前运行):它可以修改配置(例如请求URL,方法等)。它还可以用于显示一些加载消息/动画(例如,使用$rootScope上的某些属性)。

  • requestError (在发送请求之前发生错误时运行):它可用于记录,恢复,异常处理。

  • 响应(在收到任何响应后运行):它可用于记录。它还可以用于隐藏加载消息/动画。 (不要忘记在响应错误时处理此问题。)

  • responseError (当响应出错时运行(例如错误请求)):它可用于记录,恢复,异常处理。


如果拦截器无法满足您的需求,您可以使用 $provide 的装饰器来修补,增强或完全替换$http服务:< / p>

.config(function ($provide) {
    $provide.decorator('$http', function ($delegate) {
        var newHttp = $delegate;   // or a totally new object
        // ...monkey-patch newHttp or define new methods or whatever
        return newHttp;
    });
});