angular2 – 用角度2处理全球401

前端之家收集整理的这篇文章主要介绍了angular2 – 用角度2处理全球401前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的Angular 2项目中,我从返回Observable的服务中进行API调用调用代码然后订阅这个可观察的。例如:
getCampaigns(): Observable<Campaign[]> {
    return this.http.get('/campaigns').map(res => res.json());
}

假设服务器返回401.如何在全局范围内捕获此错误重定向登录页面/组件?

谢谢。

这里是我到目前为止:

// boot.ts

import {Http,XHRBackend,RequestOptions} from 'angular2/http';
import {CustomHttp} from './customhttp';

bootstrap(AppComponent,[HTTP_PROVIDERS,ROUTER_PROVIDERS,new Provider(Http,{
        useFactory: (backend: XHRBackend,defaultOptions: RequestOptions) => new CustomHttp(backend,defaultOptions),deps: [XHRBackend,RequestOptions]
    })
]);

// customhttp.ts

import {Http,ConnectionBackend,Request,RequestOptions,RequestOptionsArgs,Response} from 'angular2/http';
import {Observable} from 'rxjs/Observable';

@Injectable()
export class CustomHttp extends Http {
    constructor(backend: ConnectionBackend,defaultOptions: RequestOptions) {
        super(backend,defaultOptions);
    }

    request(url: string | Request,options?: RequestOptionsArgs): Observable<Response> {

        console.log('request...');

        return super.request(url,options);        
    }

    get(url: string,options?: RequestOptionsArgs): Observable<Response> {

        console.log('get...');

        return super.get(url,options);
    }
}

我得到的错误信息是“backend.createConnection不是一个功能

从每个请求方法获得的Observable类型为Observable< Response>。 Response对象具有状态属性,如果服务器返回该代码,则该属性将保留401 IF。所以你可能想要在映射或转换它之前检索它。

如果要避免在每次调用时执行此功能,您可能必须扩展Angular 2的Http类并注入自己的调用父(Super)的常规Http功能的实现,然后在返回对象之前处理401错误

看到:

https://angular.io/docs/ts/latest/api/http/index/Response-class.html

猜你在找的Angularjs相关文章