Как установить глобальные пользовательские заголовки в Angular2?
Я хочу установить заголовок Content-type: application/json
во все мои запросы на мой сервер в Angular2. Я использую это в основном файле app.js
.
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('/')
])
Я ожидаю, что все использования Http
будут использовать новый тип контента, но этот код по-прежнему имеет тип содержимого <<24 >
saveMaster (master) {
return this.http
.put(`${config.API_URL}/masters/${master._id}`, JSON.stringify(master))
.map(res => res.json())
}
Мне нужно вручную настроить заголовки для каждого запроса, чтобы он работал правильно. Я что-то делаю неправильно?
Примечание.. Я хочу установить параметр заголовка глобально, не нужно устанавливать его с каждым типом запроса, например, в это решение.
Ответы
Ответ 1
class MyOptions extends RequestOptions {
constructor() {
super({
method: RequestMethod.Get,
headers: new Headers({
'Content-Type': 'application/json',
'X-Some-Header': 'some-content'
});
});
}
}
- Поместите
provide(RequestOptions, {useClass: MyOptions})
ПОСЛЕ HTTP_PROVIDERS
(в противном случае вместо MyOptions
) будет использоваться BaseRequestOptions
.
bootstrap(App, [
// ...
HTTP_PROVIDERS,
provide(RequestOptions, {useClass: MyOptions}) // <- after HTTP_PROVIDERS!!!
])
См. этот фрагмент