أفضل طريقة لاستخدام Django - REST API

صور توماس من Unsplash

قبل ظهور التطبيقات أحادية الصفحة ، تعرض التطبيقات وثيقة HTML كاملة مع CSS على الخادم باستخدام PHP أو Java أو لغة أخرى وتستخدم طلبات JavaScript / JQuery و AJAX لتوفير مجموعة محددة من التفاعلات التي يمكن للمستخدم أن يحصل عليها مع صفحة الويب . لقد نجح هذا الأمر بشكل جيد مع نظام templating في Django والملفات الثابتة لأن Django قام بكافة الأعمال من أجلك ، حيث قام بتنزيل الملفات اللازمة لعنوان URL محدد.

ولكن بعد ذلك جاءت تطبيقات صفحة واحدة.

بدلاً من إعادة تحميل كل صفحة بسبب إجراء مثل النقر على زر - وجعل المستخدم ينتظر فترة أطول قليلاً - تسمح تطبيقات الصفحة الواحدة بسرعات إعادة تحميل سريعة بين الصفحات ذات طلبات HTTP غير المتزامنة ، مما يوفر تجربة مستخدم سلسة ، ولكن مع التضحية بـ وقت التحميل الأولي. كثير منهم لديهم أو في طور التحول إلى استخدام أطر عمل Javascript لمكدس الواجهة الأمامية ، وتقسيم الواجهة الأمامية إلى حد كبير من النهاية الخلفية. هذا بشكل أساسي يجعل قوالب Django عديمة الفائدة.

في رأيي ، فإن أفضل طريقة لاستخدام Django لتطبيقات الويب هي استخدامه لإنشاء واجهة برمجة تطبيقات REST واستخدام أطر العمل الأمامية - React.js و Angular.js و Ember.js و Vue.js - لتقديم صفحة الويب الخاصة بك ، والتي يمكن أن تكون مستقلة تماما عن جانغو.

واجهات برمجة التطبيقات REST

بشكل أساسي ، واجهة برمجة التطبيقات هي الواجهة التي يوفرها الخادم / الواجهة الخلفية بحيث يمكن للتطبيقات التحدث إليها. واجهة برمجة تطبيقات REST هي واجهة برمجة تطبيقات تتبع مجموعة من القواعد تسمى REST (نقل حالة التمثيل) ونقطة نهاية واجهة برمجة التطبيقات هي وظائف معينة للواجهة.

لنأخذ Instagram على سبيل المثال ، الذي نشر واجهة برمجة التطبيقات الخاصة به للجمهور. لذا قل أنك تريد معرفة معلومات حول المستخدم 1234567 ، اسمه / اسمها ، وعدد المتابعين لديهم ، والسيرة الذاتية الخاصة بهم ، وما إلى ذلك. نظرًا للوصول إلى رمز الوصول الذي تحصل عليه من Instagram ، يمكنك تقديم طلب إلى نقطة النهاية:

https://api.instagram.com/v1/users/12345678/؟access_token=ACCESS-TOKEN

ستقوم خوادم الويب Instagram بعد ذلك بأداء وظائف معينة تشمل البحث من خلال قاعدة البيانات الخاصة بهم للحصول على هذا المستخدم ، ثم تقوم بإرجاع هذا النص ، الذي يكون بتنسيق JSON:

{
 "البيانات": {
     "معرف": "1234567" ،
     "اسم المستخدم": "snoopdogg" ،
     "الاسم الكامل": "سنوب دوج" ،
     "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg"،
     "الحيوي": "هذا هو بلدي الحيوي" ،
     "موقع الويب": "http://snoopdogg.com" ،
     "العد": {
         "وسائل الإعلام": 1320 ،
         "يتبع": 420 ،
         "Follow_by": 3410
     }
  }
}

إذا كنت تريد المزيد من المعلومات مثل متابعيهم ، فعليك حينئذٍ تقديم طلب آخر لعنوان URL مختلف للحصول على قائمة بأتباعهم. هناك أيضًا طرق لإضافة مستخدمين ، إضافة صور ، وما إلى ذلك إذا قمت بتقديم بعض البيانات ، ولكن الأمر متروك لمعرفة ما إذا كانوا يريدون السماح للجمهور بذلك. هذه هي الطريقة التي يتم بها إنشاء تطبيقات الجهات الخارجية لتتبع من لا يتابعك. في الواقع ، تستدعي تطبيقات Instagram للهاتف المحمول مجموعة من وظائف API هذه وتعرض هذه البيانات بطريقة أنيقة وسريعة للغاية (إنها في الواقع رائعة للغاية في كيفية جعلها سريعة ، ويتحدث CTO في Instagram عنها هنا)

إطار عمل جانغو ريست

تتمثل إحدى الطرق العظيمة والشائعة لتطبيق API مع Django في استخدام Django REST Framework ، وهي حزمة Django مليئة بأدوات قوية ولكن مرنة لبناء واجهة برمجة تطبيقات REST. يتيح لك إجراء تسلسل لبياناتك (ترجمة كائنات النموذج الخاصة بك إلى - في هذه الحالة ، نص) ، وكتابة طرق العرض / نقاط النهاية بسرعة واختبارها ، وإضافة المصادقة ، وأكثر من ذلك بكثير.

باستخدام هذا ، ستتمكن من فصل الجهة الخلفية عن الواجهة الأمامية ، مما يتيح لك التوسع بتنسيقات أخرى مثل تطبيقات IOS و Android دون الالتصاق بتطبيقات الويب فقط. بالإضافة إلى ذلك ، لن يتم دمج الواجهة الأمامية والخلفية بطريقة ضيقة ومعقدة للغاية ، مما يجعل تصحيح الأخطاء جحيمًا حيًا. حتى شركات مثل Instagram و Doordash استخدمت Django لتنفيذ API الخاصة بهم كخدمة خلفية خاصة بهم ، مع Instagram يستخدم React.js لتطوير تطبيق الويب الخاص بهم.

هذا ، في رأيي ، هو أفضل طريقة لاستخدام Django.

المزيد من الموارد

  • ما هو الراحة؟
  • إطار عمل جانغو ريست الرسمي
  • Django REST Framework تعليمي

إذا كنت تستمتع بقراءتها ، فالرجاء ترك تعليقًا / تعليقًا! أنا جديد تمامًا في هذا الأمر وأرغب في التحسن - أي استجابة مرحب بها :)

تحقق أيضا من مشاركاتي الأخرى!