2015-12-28 15 views
6

Chcę ustawić nagłówek Content-type: application/json we wszystkich moich żądaniach do mojego zaplecza w Angular2. Używam tego w moim głównym pliku app.js.Jak ustawić globalne niestandardowe nagłówki w Angular2?

let headers = new Headers({ 
    'Content-Type', 'application/json' 
}) 
class MyOptions extends BaseRequestOptions { 
    headers: headers 
} 

bootstrap(App, [ 
    provide(RequestOptions, {useClass: MyOptions}), 
    ROUTER_BINDINGS, 
    HTTP_PROVIDERS, 
    bind(APP_BASE_HREF).toValue('/') 
]) 

Czekam wszystkie zastosowania Http do korzystania z nowego typu zawartości, ale kod ten wciąż ma typu treści ustawiony text/plain

saveMaster (master) { 
    return this.http 
    .put(`${config.API_URL}/masters/${master._id}`, JSON.stringify(master)) 
    .map(res => res.json()) 
} 

muszę ręcznie ustawić nagłówki każda prośba o poprawne działanie. czy robię coś źle?

Uwaga: chcę ustawić opcję nagłówka globalnie, nie trzeba ustawić go z każdego rodzaju jak zamówienie znajduje się w this solution.

+2

Możliwy duplikat [Angular2 - zestaw nagłówków dla każdego żądania] (http://stackoverflow.com/questions/34464108/angular2-set-headers-for-every-request) –

+0

@MarkRajcok Ta odpowiedź wciąż ustawia ręcznie niestandardowe nagłówki dla każdego typu żądania. Wypróbuję jutro rozwiązanie alexpods. –

Odpowiedz

8
  1. Zmień MyOptions do:
class MyOptions extends RequestOptions { 
    constructor() { 
    super({ 
     method: RequestMethod.Get, 
     headers: new Headers({ 
     'Content-Type': 'application/json', 
     'X-Some-Header': 'some-content' 
     }); 
    }); 
    } 
} 
  1. Put provide(RequestOptions, {useClass: MyOptions})POHTTP_PROVIDERS (inaczej domyślnie BaseRequestOptions zostaną wykorzystane zamiast swojego MyOptions).
bootstrap(App, [ 
    // ... 
    HTTP_PROVIDERS, 
    provide(RequestOptions, {useClass: MyOptions}) // <- after HTTP_PROVIDERS!!! 
]) 

Zobacz this plunk

+0

To działa ładnie. Niestety nie działa to w przypadku nagłówków dynamicznych (np. Nagłówek, który zależy od plików cookie, które mogą ulec zmianie). Konstruktor zostanie oceniony tylko raz podczas ładowania. – astreal

+0

W przypadku nagłówków dynamicznych można rozszerzyć klasę http i zmodyfikować metodę 'request', aby dodać niestandardowe nagłówki dla każdego żądania. Napisałem do tego obszerny przewodnik - http://www.adonespitogo.com/articles/angular-2-extending-http-provider/ –

Powiązane problemy