راهاندازی HttpClient
HttpClient در Angular v21 و نسخههای بعدی بهصورت پیشفرض برای injection در دسترس است.
فراهم کردن HttpClient از طریق dependency injection
میتوانید از helper function مربوط به provideHttpClient استفاده کنید تا feature set پیشفرض HTTP را پیکربندی کنید یا featureهایی را در providers برنامه، داخل app.config.ts، اضافه کنید.
export const appConfig: ApplicationConfig = {
providers: [provideHttpClient(/* add features here, such as withInterceptors(...) */)],
};اگر app شما بهجای آن از bootstrap مبتنی بر NgModule استفاده میکند، میتوانید provideHttpClient را در providers مربوط به NgModule برنامه قرار دهید تا feature set پیشفرض HTTP را پیکربندی کنید یا featureهایی اضافه کنید:
@NgModule({
providers: [provideHttpClient(/* add features here, such as withInterceptors(...) */)],
// ... other application configuration
})
export class AppModule {}سپس میتوانید service مربوط به HttpClient را بهعنوان dependency در componentها، serviceها یا classهای دیگر inject کنید:
@Service()
export class ConfigService {
private http = inject(HttpClient);
// This service can now make HTTP requests via `this.http`.
}پیکربندی featureهای HttpClient
provideHttpClient فهرستی از feature configurationهای اختیاری را میپذیرد تا جنبههای مختلف client را فعال یا پیکربندی کند. این بخش featureهای اختیاری و نحوهی استفاده از آنها را توضیح میدهد.
withXhr
export const appConfig: ApplicationConfig = {
providers: [provideHttpClient(withXhr())],
};بهصورت پیشفرض، HttpClient برای ارسال request از API مربوط به fetch استفاده میکند. feature مربوط به withXhr، client را به استفاده از API مربوط به XMLHttpRequest تغییر میدهد.
fetch API مدرنتری است و در بعضی environmentهایی که XMLHttpRequest پشتیبانی نمیشود در دسترس است. البته چند محدودیت دارد؛ مثلا upload progress event تولید نمیکند.
withInterceptors(...)
withInterceptors مجموعهی interceptor functionهایی را پیکربندی میکند که requestهای ساختهشده از طریق HttpClient را پردازش میکنند. برای اطلاعات بیشتر راهنمای interceptor را ببینید.
withInterceptorsFromDi()
withInterceptorsFromDi سبک قدیمیتر interceptorهای class-based را در configuration مربوط به HttpClient شامل میکند. برای اطلاعات بیشتر راهنمای interceptor را ببینید.
withRequestsMadeViaParent()
بهصورت پیشفرض، وقتی HttpClient را با provideHttpClient داخل یک injector مشخص پیکربندی میکنید، این configuration هر configuration مربوط به HttpClient را که ممکن است در parent injector وجود داشته باشد override میکند.
وقتی withRequestsMadeViaParent() را اضافه میکنید، HttpClient بهجای آن طوری پیکربندی میشود که requestها را، بعد از عبور از هر interceptor پیکربندیشده در همین سطح، به instance مربوط به HttpClient در parent injector پاس دهد. این زمانی مفید است که بخواهید در یک child injector interceptorهایی اضافه کنید اما همچنان request از interceptorهای parent injector هم عبور کند.
withJsonpSupport()
اضافه کردن withJsonpSupport متد .jsonp() را روی HttpClient فعال میکند؛ متدی که برای load کردن داده از domain دیگر با قرارداد JSONP، یک GET request میفرستد.
withXsrfConfiguration(...)
اضافه کردن این option اجازه میدهد functionality امنیتی XSRF داخلی HttpClient را customize کنید. برای اطلاعات بیشتر راهنمای امنیت را ببینید.
withNoXsrfProtection()
اضافه کردن این option functionality امنیتی XSRF داخلی HttpClient را disabled میکند. برای اطلاعات بیشتر راهنمای امنیت را ببینید.
Configuration مبتنی بر HttpClientModule
بعضی applicationها ممکن است HttpClient را با API قدیمیتر مبتنی بر NgModule پیکربندی کنند.
این جدول NgModuleهای موجود از @angular/common/http و ارتباطشان با provider configuration functionهای بالا را فهرست میکند.
| NgModule | معادل provideHttpClient() |
|---|---|
HttpClientModule | provideHttpClient(withInterceptorsFromDi(), withXhr()) |
HttpClientJsonpModule | withJsonpSupport() |
HttpClientXsrfModule.withOptions(...) | withXsrfConfiguration(...) |
HttpClientXsrfModule.disable() | withNoXsrfProtection() |