Spec-Zone.ru › Angular

Настройка 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API