How to set default HTTP header in Angular2?

后端 未结 2 1518
余生分开走
余生分开走 2020-12-03 15:05

I know how to set headers for a single HTTP call using the Headers class.

Is there a way to do it for all HTTP calls?

相关标签:
2条回答
  • 2020-12-03 15:38

    I see two ways to do that:

    • Option #1: use the BaseRequestOptions class

    You could extend this class and set the header to use for each request:

    @Injectable()
    export class DefaultRequestOptions extends BaseRequestOptions{
        headers:Headers = new Headers({
            'Content-Type': 'application/x-www-form-urlencoded'
        });
    }
    

    And registers it as described below:

    bootstrap(AppComponent,[
        HTTP_PROVIDERS,
        provide( RequestOptions, { useClass: DefaultRequestOptions })
    });
    
    • Option #2: extend the Http class itself

    You could also extend the Http class and set the headers you want in it, as described below:

    @Injectable()
    export class CustomHttp extends Http {
      constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {
        super(backend, defaultOptions);
      }
    
      request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
        return super.request(url, options);        
      }
    
      get(url: string, options?: RequestOptionsArgs): Observable<Response> {
        // Add headers into options
        (...)
        return super.get(url, options);
      }
    
      (...)
    }
    

    And registers it as described below:

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

    Hope it helps you, Thierry

    0 讨论(0)
  • 2020-12-03 15:38

    You can't use someting like $httpProvider for angular1 but you can create your own CustomHttp class which extends/wraps the default Http and add your headers.

    Take a look at AuthHttp source code from angular2-jwt library: https://github.com/auth0/angular2-jwt/blob/master/angular2-jwt.ts

    0 讨论(0)
提交回复
热议问题