ستأخذك هذه المقالة إلى فهم وحدة HttpClientModule باللغة الزاويّة، وتقديم طريقة الطلب، ومعلمات الطلب، ومحتوى الاستجابة، والمعترضات، والوكيل الزاوي، والمعرفة الأخرى ذات الصلة.
تُستخدم هذه الوحدة لإرسال طلبات Http ، وتُرجع الطرق المستخدمة لإرسال الطلبات كائنات Observable . [البرامج التعليمية الموصى بها: "البرنامج التعليمي الزاوي"]
1)، تقديم وحدة HttpClientModule
// app.module.ts
استيراد { httpClientModule } من '@angular/common/http'؛
الواردات: [
httpClientModule
]2) قم بإدخال كائن مثيل خدمة HttpClient لإرسال الطلبات
// app.component.ts
استيراد {HttpClient} من '@angular/common/http'؛
فئة التصدير AppComponent {
منشئ (http خاص: HttpClient) {}
}3) إرسال الطلب
استيراد {HttpClient} من "@angular/common/http"
فئة التصدير AppComponent تنفذ OnInit {
منشئ (http خاص: HttpClient) {}
نجونينيت () {
this.getUsers().subscribe(console.log)
}
الحصول على المستخدمين () {
قم بإرجاع هذا.http.get("https://jsonplaceholder.typicode.com/users")
}
}this.http.get(url [, options]); this.http.post(url, data [, options]); this.http.delete(url [, options]); this.http.put(url, data [, options]);
this.http.get<Post[]>('/getAllPosts')
.subscribe(response => console.log(response))1. فئة HttpParams
تصدير إعلان فئة HttpParams {
builder(options?: HttpParamsOptions);
has(param: string): boolean;
الحصول على (المعلمة: سلسلة): سلسلة |.
getAll(param: string): string[] null;
المفاتيح (): سلسلة []؛
إلحاق (المعلمة: سلسلة، القيمة: سلسلة): HttpParams؛
set(param: string, value: string): HttpParams;
حذف (param: string, value?: string): HttpParams;
toString (): سلسلة؛
}2. واجهة HttpParamsOptions
أعلن واجهة HttpParamsOptions {
fromString ؟: سلسلة؛
من الكائن ؟: {
[param: string]: string |.ReadonlyArray<string>;
};
التشفير ؟: HttpParameterCodec;
}3. أمثلة الاستخدام
استيراد {HttpParams} من '@angular/common/http'؛
Let params = new HttpParams({ fromObject: {name: "zhangsan"، العمر: "20"}})
المعلمات = params.append("الجنس"، "ذكر")
دع المعلمات = جديد HttpParams({ fromString: "name=zhangsan&age=20"})يتطلب إنشاء حقول رأس الطلب استخدام فئة HttpHeaders. هناك طرق مختلفة لتشغيل رؤوس الطلب ضمن كائن مثيل الفئة.
تصدير إعلان فئة HttpHeaders {
منشئ (رؤوس ؟: سلسلة | {
[الاسم: سلسلة]: سلسلة | سلسلة []؛
});
لديه (الاسم: سلسلة): منطقي؛
الحصول على (الاسم: سلسلة): سلسلة |.
المفاتيح (): سلسلة []؛
getAll(name: string): string[] null;
إلحاق (الاسم: سلسلة، القيمة: سلسلة | سلسلة []): HttpHeaders؛
set(name: string, value: string | string[]): HttpHeaders;
حذف (الاسم: سلسلة، قيمة؟: سلسلة | سلسلة []): HttpHeaders؛
} Let headers = new HttpHeaders({ test: "Hello" })أعلن النوع HttpObserve = 'body' |. // يقرأ الرد نص الاستجابة الكامل // يقرأ النص البيانات التي يعيدها الخادم
هذا.http.get(
"https://jsonplaceholder.typicode.com/users"،
{لاحظ: "الجسم" }
).الاشتراك(console.log)تعد أدوات الاعتراض طريقة لالتقاط طلبات واستجابات HTTP وتعديلها عالميًا في تطبيقات Angular. (رمز، خطأ)
سوف يعترض المعترض الطلبات المقدمة باستخدام وحدة HttpClientModule فقط.
ng g interceptor <name>


6.1 طلب الاعتراض
@Injectable()
فئة التصدير AuthInterceptor تنفذ HttpInterceptor {
منشئ () {}
// اعتراض طريقة الاعتراض (
// غير معروف يحدد نوع طلب نص (نص) الطلب: HttpRequest<unknown>,
التالي: HttpHandler
// غير معروف يحدد نوع محتوى الاستجابة (النص): Observable<HttpEvent<unknown>> {
// استنساخ وتعديل رأس الطلب const req = request.clone({
رؤوس المجموعة: {
التفويض: "الحامل xxxxxxx"
}
})
// قم بتمرير رأس الطلب المعدل مرة أخرى إلى التطبيق من خلال وظيفة رد الاتصال return next.handle(req)
}
}6.2 اعتراض الاستجابة
@Injectable()
فئة التصدير AuthInterceptor تنفذ HttpInterceptor {
منشئ () {}
// اعتراض طريقة الاعتراض (
الطلب: HttpRequest<غير معروف>،
التالي: HttpHandler
): يمكن ملاحظتها<any> {
العودة next.handle(request).pipe(
إعادة المحاولة (2)،
كاتش إيررور ((خطأ: HttpErrorResponse) => throwError(خطأ))
)
}
}6.3 الحقن الاعتراضي
استيراد { AuthInterceptor } من "./auth.interceptor"
استيراد { HTTP_INTERCEPTORS } من "@angular/common/http"
@NgModule({
مقدمي الخدمة: [
{
توفير: HTTP_INTERCEPTORS،
فئة الاستخدام: AuthInterceptor،
متعدد: صحيح
}
]
})1. قم بإنشاء ملف proxy.conf.json في الدليل الجذر للمشروع وأضف الكود التالي
{
"/واجهة برمجة التطبيقات/*": {
"الهدف": "http://localhost:3070",
"آمن": كاذب،
"changeOrigin": صحيح
}
}/api/*: الطلبات التي تبدأ بـ /api المقدمة في التطبيق تمر عبر هذا الوكيل
الهدف: عنوان URL من جانب الخادم
آمن: إذا كان بروتوكول عنوان URL من جانب الخادم هو https، فيجب أن يكون هذا العنصر صحيحًا
ChangeOrigin: إذا لم يكن الخادم مضيفًا محليًا، فيجب أن يكون هذا العنصر صحيحًا
2. حدد ملف تكوين الوكيل (الطريقة الأولى)
"البرامج النصية": {
"start": "ngserv --proxy-config proxy.conf.json"،
}3. حدد ملف تكوين الوكيل (الطريقة الثانية)
"يخدم": {
"خيارات": {
"proxyConfig": "proxy.conf.json"
}, تُستخدم هذه الوحدة لإرسال طلبات Http ، وتُرجع الطرق المستخدمة لإرسال الطلبات كائنات Observable .