扩展BaseRequestOptions以设置请求的全局标头

时间:2017-02-27 08:22:26

标签: angular

我有一个扩展baserequestoptions的服务,包括两个标头,这些标头对所有http请求都是通用的。问题是在实例化服务时在构造函数中设置这些头。因此,一旦设置它们,除非发生页面重新加载,否则它们不会改变(假设:所有代码,组件,服务等都在浏览器刷新时重新创建)

为了解决这个问题,我添加了一个public method setHeader()我可以从其他组件/服务中调用如果我可以获得DefaultRequestOptions的实例,那么我可以调用getHeader()方法。

现在,我不知道如何获取DefaultRequestOptions的实例。 此外,是否有可能使用rxjs observables自动更新DefaultRequestOptions类中的标头。

import { Injectable } from '@angular/core';
import { BaseRequestOptions, RequestOptions } from '@angular/http';

@Injectable()
export class DefaultRequestOptions extends BaseRequestOptions {

constructor() {
 super();

// Set the default 'Content-Type' header
this.headers.set('Content-Type', 'application/json');
// Set the default 'Authorization' header
this.headers.set('Authorization', 'oh god');
}

public setHeader(header: string, value: string){
 this.headers.set(header, value);
}

}

export const requestOptionsProvider = { provide: RequestOptions, useClass: DefaultRequestOptions };

0 个答案:

没有答案