العودة إلى المدونة

إدارة طلبات HTTP ومعالجة الأخطاء باستخدام Angular Interceptors

إدارة طلبات HTTP ومعالجة الأخطاء باستخدام Angular Interceptors

إذا كنت تقوم بتطوير تطبيق باستخدام AngularJS، فمن المحتمل أنك على دراية بمعترضات HTTP (HTTP interceptors). ومع ذلك، لم تكن معترضات HTTP هذه متاحة في Angular حتى الإصدار 4.3. في هذا البرنامج التعليمي، سنستخدم المعترضات (interceptors) في Angular لمعالجة طلبات واستجابات HTTP، ومعالجة الأخطاء.

المتطلبات الأساسية

Angular تطبيقات تستخدم Node.js كبيئة تشغيل. لإكمال هذا البرنامج التعليمي، ستحتاج إلى تثبيت Node.js على جهازك. لحسن الحظ، فإن تثبيت Node.js سهل للغاية. لدينا دليل كامل حول كيفية تثبيت Node.js على Ubuntu 18.04 هنا.

بالإضافة إلى ذلك، سيكون من المفيد لك معرفة Angular وأن تكون على دراية باستخدام Angular CLI لبناء تطبيقات Angular. سنستخدم Node v8.12.0 و npm v6.4.1.

الخطوة 1: إنشاء تطبيق Angular

بادئ ذي بدء، دعنا ننشئ تطبيق Angular جديدًا باستخدام Angular CLI. سنقوم بتسمية تطبيقنا Angular-Interceptor. قم بتشغيل الأمر أدناه لإنشاء التطبيق:

سيُطلب منك تحديد بعض الخيارات. أدخل القيم الافتراضية وتابع:

ang cli Angular Interceptors

بعد ذلك، انتقل إلى دليل التطبيق، وقم بتشغيل الأمر أدناه لبدء تشغيل التطبيق:

ng serve Angular Interceptors

ثم، اعرض http://localhost:4200 في متصفحك لمشاهدة التطبيق. لقد قمت الآن بتهيئة تطبيق Angular أساسي.

الخطوة 2: تنسيق تطبيق Angular

هنا سنقوم بتنسيق تطبيق Angular الخاص بنا باستخدام Angular Material. لتثبيت Angular Material في مشروعك، قم بتشغيل الأمر أدناه:

سيؤدي هذا إلى تثبيت @angular/material, @angular/cdk، و @angular/animation في مشروعك. بعد ذلك، سنقوم بإعداد رسوم متحركة في المشروع. أضف BrowserAnimationsModule في ملف src/app/module.ts الخاص بك:

سنستخدم مكون الحوار (Dialog component) من Angular Material. لاستخدام مكون الحوار، يتعين علينا استيراد MatDialogModule في ملف src/app/app.module.ts الخاص بك:

لجعل واجهة المستخدم أكثر جاذبية، دعنا نضيف indigo-pink.css إلى ملف styles.scss الخاص بك:

Step 3: Build Your Angular Interceptor

تحت مجلد app، سنقوم بإنشاء مجلد جديد باسم interceptor. داخل هذا المجلد الذي تم إنشاؤه حديثًا، قم بإنشاء ملف httpconfig.interceptor.ts جديد.

نحتاج إلى استيراد بعض التبعيات في ملف httpconfig.interceptor.ts لكي يعمل المعترض الخاص بنا. هذه التبعيات هي HttpInterceptor, HttpRequest, HttpResponse، و HttpHandler, HttpEvent, HttpErrorResponse.

سيبدو ملف httpconfig.interceptor.ts الخاص بنا كما يلي بعد الاستيراد:

بعد ذلك، قم بإنشاء فئة HttpConfigInterceptor وقم بتنفيذ الواجهة HttpInterceptor. هذا مثال:

أضف الكود أدناه إلى httpconfig.interceptor.ts ملف:

لكي يعمل، نحتاج إلى استيراد httpconfig.interceptor.ts في app.module.ts ملف:

أضف HttpConfigInterceptor إلى providers. سنقوم بتعيين multi: true للتعامل مع اعتراضات متعددة:

في القسم التالي، سنقوم بإنشاء الخدمة الخاصة بنا لمعالجة الأخطاء.

الخطوة 4: خدمة معالجة الأخطاء

هنا سنقوم بكتابة كود لمعالجة الأخطاء. سنحتاج إلى التقاط الأخطاء وعرضها بشكل مناسب للمستخدمين النهائيين. باختصار، فيما يلي الخطوات التي سنتبعها:

  1. أنشئ مجلدًا باسم error-dialog في app مجلد.
  2. أنشئ خدمة للأخطاء باسم errorDialogService في ملف باسم errordialog.service.ts.
  3. أضف الكود أدناه في errordialog.service.ts :
بعد ذلك، قم بإنشاء ملف جديد باسم errordialog.component.ts. داخل هذا الملف، أضف الكود أدناه:
أخيرًا، نحتاج إلى إنشاء ملف HTML، errordialog.component.html، للقالب:
نحتاج إلى مراجعة httpconfig.interceptor.ts لإجراء بعض التغييرات. ستسمح لنا هذه التغييرات باعتراض الأخطاء.

باختصار، دعنا نسرد الخطوات أدناه:

  1. ابدأ باستيراد errordialog.service.
  2. بعد ذلك، سنضيف دالة البناء لـ errorDialogService.
  3. سنضيف أيضًا الكود لمعالجة استجابة الخطأ باستخدام catchError و throwError.
  4. استيراد errordialog.service و errordialog.component في AppModule.

بعد إجراء التغييرات، سيتم تعديل ملفين: app.module.ts و httpconfig.interceptor.ts:

الخطوة 5: إنشاء خدمات تجريبية

في هذه الخطوة، سنقوم بإنشاء خدمتين كعينة:

  1. واجهة برمجة تطبيقات تسجيل الدخول
  2. واجهة برمجة تطبيقات تفاصيل العميل

أنشئ مجلدًا جديدًا باسم services في المجلد src . بعد ذلك، داخل هذا المجلد المنشأ حديثًا، أنشئ ملفًا جديدًا باسم login.service.ts، وأضف دالتين:

الخطوة 6: استدعاء خدمة عميل HTTP

أخيرًا، وصلنا إلى الجزء الأخير من البرنامج التعليمي الخاص بنا. سنقوم باستدعاء خدمة HTTP الخاصة بنا من ملف app.component.ts. أضف دالتي LoginService إلى app.component.ts. قم باستدعاء واجهة برمجة تطبيقات تسجيل الدخول عند التحميل (onload) وتفاصيل العملاء (customers/details) باستخدام onclick:

الآن يتعين علينا إضافة عنصر واجهة مستخدم في app.component.html، حتى يتمكن المستخدم من النقر عليه:

لإنهاء العملية، ستحتاج إلى تضمين LoginService في providers في AppModule:

أدناه، ستجد لقطة شاشة لمربع حوار معالج الأخطاء:

error

الخاتمة

في هذا البرنامج التعليمي، تعلمنا كيفية التعامل مع طلبات واستجابات HTTP باستخدام اعتراضات Angular. كما تعلمنا كيفية التعامل مع الأخطاء باستخدام مربع الحوار في Angular Material.

تستخدم تطبيقات Angular منصة Node.js كبيئة تشغيل. إذا كنت ترغب في معرفة المزيد عن Node.js وكيفية نشر تطبيقات Node.js باستخدام Docker، فراجع دليلنا كيفية نشر تطبيق Node.js (Express.js) باستخدام Docker على Ubuntu 20.04 الخاص بنا. يمكنك أيضًا مراجعة كيفية تنفيذ مهام الإنتاج على Ubuntu 20.04 باستخدام Node.js و تثبيت Node.js على CentOS 8: دليل كامل.

حوسبة سعيدة!

author

Pranay Kapgate

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.