Restangular - 如何取消/实现我自己的请求

时间:2015-01-09 22:33:48

标签: restangular

我找到了一些使用fullRequestInterceptorhttpConfig.timeout来允许以restangular取消请求的示例。

example 1 | example 2

这就是我添加拦截器的方式:

    app.run(function (Restangular, $q) {
        Restangular.addFullRequestInterceptor(function (element, operation, what, url, headers, params, httpConfig) {

我设法通过在超时中放置已解决的承诺来中止请求(导致记录错误并且请求被取消但被取消),这不是我想要的。

我尝试做什么 - 我想用自己的请求自己制作AJAX请求,并将结果传回给使用Restangular的任何组件。这可能吗?

2 个答案:

答案 0 :(得分:2)

我一直在寻找一种解决它的方法,但我本来应该寻找一种有棱角的方式:)

Overriding dependency at runtime in AngularJS

看起来你可以在它到达Restangular之前扩展$http。我还没有尝试过,但看起来它可以100%满足我的需求。

答案 1 :(得分:0)

我正在使用requestInterceptor,但只更改了我的请求的参数和标题。

基本上,addFullRequestInterceptor可以帮助您在发送请求之前对其进行更改。那么为什么不改变你想要打电话的网址呢?

您可以修改并返回httpConfig对象,如果它接近$http的配置(我敢打赌),您可以更改url和even方法,从而更改原始请求到另一个,完全知道。

之后,您不需要超时,只需根据需要返回httpConfig自定义。

RestangularConfigurer.addFullRequestInterceptor(function (element, operation, route, url, headers, params, httpConfig) {

        httpConfig.url = "http://google.com";
        httpConfig.method = "GET";
        httpConfig.params = "";

        return {
            httpConfig: httpConfig
        };
    });

它将被传递,你的服务或控制器将不会知道某些东西发生变化,这是拦截器的原理,它允许你改变东西并返回到下一个进程有点像中间件使用。因此,对于拨打电话的人来说,它是透明的,但是会调用你想要的电话。