Настройка HttpClient
Прежде чем использовать HttpClient в приложении, необходимо настроить его с помощью внедрения зависимостей.
Предоставление HttpClient с помощью внедрения зависимостей
HttpClient предоставляется с помощью вспомогательной функции provideHttpClient, которую большинство приложений добавляет в приложение providers в app.config.ts.
export const appConfig: ApplicationConfig = {
providers: [provideHttpClient()],
};
Если приложение использует загрузку на основе NgModule, вместо этого можно добавить provideHttpClient в список провайдеров NgModule приложения:
@NgModule({
providers: [provideHttpClient()],
// ... other application configuration
})
export class AppModule {}
Затем можно внедрить сервис HttpClient как зависимость в компоненты, сервисы или другие классы:
@Service()
export class ConfigService {
private http = inject(HttpClient);
// This service can now make HTTP requests via `this.http`.
} Настройка возможностей HttpClient
provideHttpClient принимает список необязательных конфигураций возможностей, позволяющих включать или настраивать различные аспекты клиента. В этом разделе описаны необязательные возможности и способы их использования.
withXhr
export const appConfig: ApplicationConfig = {
providers: [provideHttpClient(withXhr())],
};
По умолчанию HttpClient использует API fetch для выполнения запросов. Возможность withXhr переключает клиент на использование API XMLHttpRequest.
fetch — более современный API, доступный в некоторых средах, где XMLHttpRequest не поддерживается. У него есть несколько ограничений, например отсутствие событий отслеживания хода загрузки.
withInterceptors(...)
withInterceptors настраивает набор функций-перехватчиков, обрабатывающих запросы, выполняемые через HttpClient. Подробнее см. в руководстве по перехватчикам.
withInterceptorsFromDi()
withInterceptorsFromDi добавляет перехватчики старого типа, основанные на классах, в конфигурацию HttpClient. Подробнее см. в руководстве по перехватчикам.
ПОЛЕЗНО: Функциональные перехватчики (через withInterceptors) имеют более предсказуемый порядок выполнения, поэтому мы рекомендуем использовать их вместо перехватчиков на основе DI.
withRequestsMadeViaParent()
По умолчанию при настройке HttpClient с помощью provideHttpClient в заданном инжекторе эта конфигурация переопределяет любую конфигурацию HttpClient, которая может присутствовать в родительском инжекторе.
Если добавить withRequestsMadeViaParent(), HttpClient будет настроен так, чтобы передавать запросы экземпляру HttpClient в родительском инжекторе после прохождения через все настроенные на текущем уровне перехватчики. Это полезно, если нужно добавить перехватчики в дочерний инжектор, продолжая при этом передавать запрос через перехватчики родительского инжектора.
ВАЖНО: Над текущим инжектором необходимо настроить экземпляр HttpClient. В противном случае этот параметр недействителен, и при попытке его использовать возникнет ошибка во время выполнения.
withJsonpSupport()
Подключение withJsonpSupport включает метод .jsonp() в HttpClient, который выполняет GET-запрос с использованием соглашения JSONP для загрузки данных из другого домена.
ПОЛЕЗНО: По возможности для запросов к другим доменам используйте CORS вместо JSONP.
withXsrfConfiguration(...)
Этот параметр позволяет настраивать встроенные функции безопасности XSRF в HttpClient. Подробнее см. в руководстве по безопасности.
withNoXsrfProtection()
Этот параметр отключает встроенные функции безопасности XSRF в HttpClient. Подробнее см. в руководстве по безопасности.
Конфигурация на основе HttpClientModule
Некоторые приложения могут настраивать HttpClient с помощью старого API на основе NgModule.
В этой таблице перечислены доступные в @angular/common/http модули NgModule и указано, как они соотносятся с приведёнными выше функциями настройки провайдеров.
| NgModule |
эквивалент provideHttpClient() |
|---|---|
HttpClientModule | provideHttpClient(withInterceptorsFromDi(), withXhr()) |
HttpClientJsonpModule | withJsonpSupport() |
HttpClientXsrfModule.withOptions(...) | withXsrfConfiguration(...) |
HttpClientXsrfModule.disable() | withNoXsrfProtection() |
Соблюдайте осторожность при использовании HttpClientModule в нескольких инжекторах
Если HttpClientModule присутствует в нескольких инжекторах, поведение перехватчиков определено недостаточно чётко и зависит от конкретных параметров, а также порядка провайдеров и импортов.
Для конфигураций с несколькими инжекторами предпочтительно использовать provideHttpClient, поскольку его поведение более предсказуемо. См. описание возможности withRequestsMadeViaParent выше.
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/guide/http/setup