الجزء 1: ما هو REST في هذا الجزء سوف نلقي نظرة فاحصة على كيفية حدوث الاتصال بين العميل والخادم. وعلى طول الطريق، سنكشف عن مصطلحات جديدة ونقدم شرحًا لها. لتوضيح كل شيء، سنقوم بتحليل الاتصال بين العميل والخادم باستخدام مثال بعض تطبيقات RESTful. لنفترض أننا نعمل على تطوير تطبيق ويب قادر على تخزين معلومات حول العملاء وطلباتهم. أولئك. نظامنا قادر على التعامل مع بعض الكيانات: إنشائها، وتحريرها، وحذفها، وتوفير معلومات عنها. هذه الكيانات ستكون:
- العملاء - العملاء؛
- الطلبات - طلبات العملاء؛
- العناصر - البضائع.
الطلبات
يتم إجراء طلبات العميل دائمًا تقريبًا عبر HTTP. بشكل عام، تتكون طلبات HTTP من عدة مكونات:- طريقة HTTP؛
- عنوان؛
- أوري؛
- هيئة الطلب.
URI والموارد
تسمى البيانات التي يحصل عليها العملاء أو يعدلونها من خلال الطلبات بالموارد. أساس التفاعل بين العميل والخادم هو معالجة الموارد. الموارد في REST هي أي شيء يمكن تسميته. بمعنى ما، هذه تشبه الفصول الدراسية في Java. في Java يمكننا إنشاء فئة لأي شيء. الأمر نفسه في REST - يمكن أن يكون المورد أي شيء: مستخدم، أو مستند، أو تقرير، أو أمر. كل هذا يمكن أن يكون إما تجريدًا لبعض الكيانات أو شيئًا ملموسًا، على سبيل المثال، ملف - صورة، فيديو، رسوم متحركة، ملف PDF. على سبيل المثال، لدينا 3 موارد:- العملاء - العملاء؛
- الطلبات - طلبات العملاء؛
- العناصر - البضائع.
- /clients - URI لجميع العملاء الحاليين؛
- /clients/23 - URI لعميل معين، أي العميل ذو المعرف = 23؛
- /clients/4 - URI لعميل معين، أي العميل ذو المعرف=4.
- /clients/4/orders - معرف URI لجميع طلبات العميل رقم 4؛
- /clients/1/orders/12 - معرف URI للطلب رقم 12 للعميل رقم 1.
- /clients/1/orders/12/items — URI لقائمة جميع المنتجات بالترتيب رقم 12 التي قدمها العميل رقم 1.
طريقة HTTP
أسلوب HTTP (أسلوب HTTP باللغة الإنجليزية) عبارة عن تسلسل لأي أحرف، باستثناء عناصر التحكم والفواصل، التي تشير إلى العملية الرئيسية على المورد. هناك العديد من طرق HTTP الشائعة. ندرج تلك التي يتم استخدامها غالبًا في خدمات RESTful:- GET - يُستخدم للحصول على معلومات حول مورد معين (عبر المعرف) أو مجموعة من الموارد؛
- POST - يُستخدم لإنشاء مورد جديد؛
- PUT - يستخدم لتغيير المورد (عبر المعرف)؛
- DELETE - يستخدم لحذف مورد (عبر المعرف).
العناوين
تحتوي الطلبات، وكذلك الاستجابات، على رؤوس HTTP. يرسلون معلومات إضافية حول الطلب (أو الاستجابة). الرؤوس هي أزواج ذات قيمة أساسية. يمكنك قراءة قائمة العناوين الأكثر شيوعاً على صفحة ويكيبيديا . باستخدام REST، يمكن للعملاء غالبًا إرسال رأس قبول في طلبهم إلى الخادم. من الضروري السماح للخادم بمعرفة التنسيق الذي يتوقع العميل تلقي الرد منه. يتم عرض خيارات التنسيق المختلفة في ما يسمى بقائمة أنواع MIME. MIME (امتدادات بريد الإنترنت متعددة الأغراض) عبارة عن مواصفات لتشفير المعلومات وتنسيق الرسائل بحيث يمكن إرسالها عبر الإنترنت. يتكون كل نوع MIME من جزأين، مفصولتين بشرطة مائلة: نوع ونوع فرعي. أمثلة على أنواع MIME لأنواع مختلفة من الملفات:- نص - نص/عادي، نص/CSS، نص/HTML؛
- صورة - صورة/png، صورة/jpeg، صورة/gif؛
- الصوت - الصوت/WAV، الصوت/MPEG؛
- فيديو - فيديو/MP4، فيديو/OGG؛
- التطبيق - application/json، application/pdf، application/xml، application/octet-stream.
Accept:application/json
يخبر هذا الرأس الخادم أن العميل يتوقع تلقي استجابة بتنسيق JSON.
هيئة الطلب
رسالة يرسلها العميل إلى الخادم. يعتمد ما إذا كان الطلب يحتوي على نص أم لا على نوع طلب HTTP. على سبيل المثال، عادةً لا تحتوي طلبات GET وDELETE على أي نص طلب. لكن PUT وPOST يمكن أن يحتويا على: الأمر كله يتعلق بالغرض الوظيفي لنوع الطلب. بعد كل شيء، لتلقي البيانات وحذفها بواسطة المعرف (الذي يتم إرساله في عنوان URL)، لا تحتاج إلى إرسال بيانات إضافية إلى الخادم. ولكن لإنشاء مورد جديد (طلب POST)، تحتاج إلى نقل هذا المورد. الأمر نفسه ينطبق على تعديل مورد موجود. في REST، غالبًا ما يتم استخدام تنسيقات XML أو JSON لنقل نص الطلب. التنسيق الأكثر شيوعًا هو JSON. لنفترض أننا نريد إرسال طلب إلى الخادم، وإنشاء مورد جديد فيه. إذا كنت تتذكر، فقد نظرنا كمثال إلى أحد التطبيقات التي تدير طلبات العملاء. لنفترض أننا نريد إنشاء عميل جديد. في حالتنا، نقوم بتخزين المعلومات التالية عن العملاء: الاسم البريد الإلكتروني رقم الهاتف ثم يمكن أن يكون نص هذا الطلب هو JSON التالي:
{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+7 (191) 746-43-23"
}
تجميع الطلبات معًا
لذلك، نظرنا في ما يمكن أن يتكون منه طلب العميل. دعونا الآن نعطي بعض الأمثلة على الاستعلامات مع الأوصافطلب | وصف |
---|---|
|
احصل على معلومات حول العميل رقم 23 بتنسيق json أو xml |
|
قم بإنشاء عميل جديد باستخدام الحقول التالية: الاسم - البريد الإلكتروني لـ Amigo - amigo@jr.com الهاتف. - +7 (191) 746-43-23 |
|
قم بتحرير العميل رقم 1 كما يلي: الاسم - البريد الإلكتروني لـ Ben - bigben@jr.com الهاتف. - +380 (190) 346-42-13 |
|
حذف الطلب رقم 6 من العميل رقم 12 من النظام |
الإجابات
دعنا نقول بضع كلمات عن استجابات الخادم. تتكون الإجابة عادةً من الأجزاء التالية:- رمز الاستجابة؛
- رؤوس؛
- هيئة الاستجابة.
رموز استجابة HTTP
دعونا نلقي نظرة فاحصة على رموز استجابة HTTP. إليك اقتباس من ويكيبيديا: رمز حالة HTTP هو جزء من السطر الأول من استجابة الخادم للطلبات عبر بروتوكول HTTP. وهو عدد صحيح مكون من ثلاثة أرقام عشرية. يشير الرقم الأول إلى فئة الحالة. وعادة ما يتبع رمز الرد عبارة توضيحية باللغة الإنجليزية مفصولة بمسافة، توضح للشخص سبب هذا الرد بالذات. أمثلة:- 201 مخلوق؛
- 401 غير مصرح به؛
- 507 تخزين غير كاف.
- 1ХХ - إعلامية؛
- 2ХХ - الإبلاغ عن حالات القبول والمعالجة الناجحة لطلب العميل؛
- 3XX - أبلغ العميل أنه لإكمال العملية بنجاح، من الضروري تقديم طلب آخر، عادةً باستخدام عنوان URI مختلف؛
- 4ХХ - خطأ العميل. على سبيل المثال، طلب تم إنشاؤه بشكل غير صحيح أو رمز 404 Not Found المعروف، والذي يمكن أن يحدث عندما يطلب العميل موردًا غير موجود؛
- 5ХХ - خطأ في الخادم. يتم إرجاعها إلى العميل في حالة فشل العملية بسبب خطأ الخادم.
GO TO FULL VERSION