如下所示:
//方案1:能用,但token信息不能寫在服務中,應該用全局變量替代,而且還得考慮參數復合問題。@Injectable()export class DefaultRequestOptions extends BaseRequestOptions { constructor() { super(); this.headers.set('Content-Type', 'application/json'); }}export const requestOptionProvider = {provide: RequestOptions, useClass: DefaultRequestOptions};//方案2:能用,比較正規的實現,但以后請求就只能用myHttp對象了,而且還要考慮參數復合問題。export class myHttp extends Http { defaultHeaders = new Headers({ 'Content-Type': 'application/json' }); constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions, private appInitService: AppInitService) { super(_backend, _defaultOptions); } get(url: string, options?: RequestOptionsArgs): Observable<Response> { let optionBuf = new RequestOptions({ headers: this.defaultHeaders, params: {'token': this.appInitService.token} }); //here extend options; return super.get(url, optionBuf); }}export function myHttpFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions, appInitService: AppInitService): myHttp { return new myHttp(xhrBackend, requestOptions, appInitService); // 創建myHttp對象}export const myHttpProvider = { provide: myHttp, useFactory: myHttpFactory, deps: [XHRBackend, RequestOptions, AppInitService]};
以上這篇angular2實現統一的http請求頭方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答