استراحة

REST ( نقل الحالة التمثيلية ) هو نمط معماري برمجي تم ابتكاره لوصف تصميم وتوجيه تطوير بنية شبكة الويب العالمية . يحدد REST مجموعة من القيود لكيفية عمل بنية نظام الوسائط المتعددة الموزع على نطاق الإنترنت ، مثل الويب. يركز نمط REST المعماري على واجهات موحدة ، ونشر المكونات بشكل مستقل ، وقابلية توسيع التفاعلات بينها، وإنشاء بنية متعددة الطبقات لتعزيز التخزين المؤقت لتقليل زمن الاستجابة الذي يلاحظه المستخدم ، وفرض الأمان ، وتغليف الأنظمة القديمة . [ 1 ]

استُخدمت تقنية REST على نطاق واسع في صناعة البرمجيات لإنشاء تطبيقات ويب موثوقة لا تعتمد على الحالة . يُمكن وصف التطبيق الذي يلتزم بقيود بنية REST بشكل غير رسمي بأنه RESTful ، على الرغم من أن هذا المصطلح يرتبط عادةً بتصميم واجهات برمجة التطبيقات (APIs) القائمة على بروتوكول HTTP ، وما يُعتبر على نطاق واسع أفضل الممارسات فيما يتعلق بـ "الأفعال" ( طرق HTTP ) التي يستجيب لها المورد ، بينما لا يرتبط كثيرًا بمفهوم REST كما تم صياغته في الأصل، بل غالبًا ما يتعارض معه. [ 2 ]

مبدأ

تم تقديم مصطلح "نقل الحالة التمثيلية" وتعريفه في عام 2000 من قِبل عالم الحاسوب روي فيلدينغ في أطروحته للدكتوراه. ويعني هذا المصطلح أن الخادم سيرد بتمثيل لمورد (غالباً ما يكون مستند HTML )، وسيحتوي هذا المورد على روابط وسائط متعددة يمكن اتباعها لتغيير حالة النظام. وسيتلقى أي طلب من هذا القبيل بدوره تمثيلاً لمورد، وهكذا.

من النتائج المهمة أن المعرّف الوحيد المطلوب معرفته هو معرّف المورد الأول المطلوب، وسيتم اكتشاف جميع المعرّفات الأخرى تلقائيًا. هذا يعني أن هذه المعرّفات يمكن أن تتغير دون الحاجة إلى إبلاغ العميل مسبقًا، وأن العميل والخادم يجب أن يكونا مرتبطين بشكل غير مترابط بطبيعتهما .

تاريخ

روي فيلدينغ يتحدث في مؤتمر OSCON 2008

بدأ استخدام الإنترنت بشكل يومي في الفترة ما بين عامي 1993 و1994، عندما بدأت مواقع الويب العامة بالظهور. [ 3 ] في ذلك الوقت، لم يكن هناك سوى وصف مجزأ لبنية الإنترنت، وكان هناك ضغط داخل مجتمع مطوري الويب للاتفاق على معيار لبروتوكولات واجهة الويب. على سبيل المثال، أُضيفت العديد من الإضافات التجريبية إلى بروتوكول الاتصال (HTTP) لدعم الخوادم الوكيلة ، وكان يجري اقتراح المزيد من الإضافات، ولكن كانت هناك حاجة إلى بنية ويب رسمية لتقييم تأثير هذه التغييرات. [ 4 ]

بدأت مجموعتا عمل W3C و IETF معًا العمل على وضع أوصاف رسمية للمعايير الثلاثة الأساسية للويب: URI و HTTP و HTML . شارك روي فيلدينغ في وضع هذه المعايير (وتحديدًا HTTP 1.0 و1.1، وURI)، وخلال السنوات الست التالية ، ابتكر نمط REST المعماري، واختبر قيوده على معايير بروتوكولات الويب، واستخدمه كوسيلة لتحديد التحسينات المعمارية ، ولتحديد أوجه عدم التوافق المعماري. عرّف فيلدينغ REST في أطروحته للدكتوراه عام 2000 بعنوان "الأنماط المعمارية وتصميم بنى البرمجيات القائمة على الشبكة" [ 1 ] [ 5 ] في جامعة كاليفورنيا في إرفاين .  

لإنشاء نمط REST المعماري، حدد فيلدينغ المتطلبات التي تنطبق عند إنشاء تطبيق شبكي عالمي، مثل الحاجة إلى سهولة الوصول إليه لتمكين اعتماده عالميًا. كما استعرض العديد من الأنماط المعمارية الحالية للتطبيقات الشبكية، وحدد الميزات المشتركة بينها، مثل التخزين المؤقت وميزات العميل والخادم، والميزات الفريدة لـ REST، مثل مفهوم الموارد. كان فيلدينغ يسعى إلى تصنيف بنية التطبيقات الحالية وتحديد الجوانب التي ينبغي اعتبارها أساسية لمتطلبات الأداء والسلوك للويب.

بطبيعتها، تُعدّ الأنماط المعمارية مستقلة عن أي تطبيق مُحدد، وبينما تم ابتكار REST كجزء من تطوير معايير الويب، فإن تطبيق الويب لا يلتزم بكل قيود نمط REST المعماري. قد تحدث حالات عدم التوافق نتيجةً للجهل أو الإهمال، ولكن وجود نمط REST المعماري يُتيح إمكانية تحديدها قبل أن تُصبح معيارية. على سبيل المثال، أشار فيلدينغ إلى أن تضمين معلومات الجلسة في عناوين URI يُعدّ انتهاكًا لقيود REST، مما قد يؤثر سلبًا على التخزين المؤقت المشترك وقابلية توسع الخادم. كما تُخالف ملفات تعريف الارتباط HTTP قيود REST [ 4 ] لأنها قد تُصبح غير متزامنة مع حالة تطبيق المتصفح، مما يجعلها غير موثوقة؛ كما أنها تحتوي على بيانات مُبهمة قد تُثير مخاوف بشأن الخصوصية والأمان .

الخصائص المعمارية

صُمم نمط REST المعماري للتطبيقات الشبكية، وتحديدًا تطبيقات العميل والخادم. ولكن الأهم من ذلك، أنه مصمم للاستخدام على نطاق الإنترنت، لذا يجب أن يكون الربط بين وكيل المستخدم (العميل) والخادم الأصلي مرنًا قدر الإمكان لتسهيل اعتماده على نطاق واسع.

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

نموذج علاقة الكيان بالمفاهيم المعبر عنها بأسلوب REST المعماري

تؤثر قيود أسلوب REST المعماري على الخصائص المعمارية التالية: [ 1 ] [ 7 ]

  • الأداء في تفاعلات المكونات، والذي يمكن أن يكون العامل المهيمن في الأداء الذي يدركه المستخدم وكفاءة الشبكة؛ [ 8 ]
  • قابلية التوسع التي تسمح بدعم أعداد كبيرة من المكونات والتفاعلات بين المكونات؛
  • بساطة واجهة موحدة؛
  • إمكانية تعديل ( أو توسيع ) المكونات لتلبية الاحتياجات المتغيرة (حتى أثناء تشغيل التطبيق)؛
  • إمكانية رؤية الاتصالات بين المكونات بواسطة وكلاء الخدمة؛
  • إمكانية نقل المكونات عن طريق نقل كود البرنامج مع البيانات؛
  • الموثوقية في مقاومة الأعطال على مستوى النظام في حالة وجود أعطال داخل المكونات أو الموصلات أو البيانات. [ 8 ]

القيود المعمارية

يُحدد نمط REST المعماري ستة قيود توجيهية. [ 7 ] [ 9 ] عند تطبيق هذه القيود على بنية النظام، فإنه يكتسب خصائص غير وظيفية مرغوبة ، مثل الأداء، وقابلية التوسع، والبساطة، وقابلية التعديل، والوضوح، وقابلية النقل، والموثوقية. [ 1 ]

القيود الرسمية لـ REST هي كما يلي: [ 10 ]

  • العميل/الخادم – يتم فصل العملاء عن الخوادم بواسطة واجهة محددة جيدًا
  • عديم الحالة – ​​لا يستهلك عميل معين مساحة تخزين الخادم عندما يكون العميل "في حالة سكون".
  • التخزين المؤقت – تشير الاستجابات إلى إمكانية تخزينها مؤقتًا
  • واجهة موحدة
  • النظام متعدد الطبقات – لا يستطيع العميل عادةً تحديد ما إذا كان متصلاً مباشرةً بالخادم النهائي، أو بوسيط على طول الطريق.
  • البرمجة عند الطلب (اختياري) - تستطيع الخوادم توسيع أو تخصيص وظائف العميل مؤقتًا عن طريق نقل منطق إلى العميل يمكن تنفيذه داخل آلة افتراضية قياسية

واجهة موحدة

يُعدّ قيد الواجهة الموحدة أساسيًا لتصميم أي نظام RESTful. [ 1 ] فهو يُبسّط بنية النظام ويفصلها، مما يُمكّن كل جزء من التطور بشكل مستقل. القيود الأربعة لهذه الواجهة الموحدة هي:

  • تحديد الموارد في الطلبات: تُحدد الموارد الفردية في الطلبات باستخدام معرّفات الموارد الموحدة (URIs) . وتُعتبر الموارد نفسها منفصلةً من الناحية المفاهيمية عن التمثيلات التي تُعاد إلى العميل. على سبيل المثال، يمكن للخادم إرسال البيانات من قاعدة بياناته بصيغة HTML أو XML أو JSON ، وهي ليست تمثيلات داخلية للخادم.
  • التلاعب بالموارد من خلال التمثيلات: عندما يمتلك العميل تمثيلاً لمورد ما، بما في ذلك أي بيانات وصفية مرفقة، فإنه يمتلك معلومات كافية لتعديل حالة المورد أو حذفها.
  • الرسائل ذاتية الوصف: تتضمن كل رسالة معلومات كافية لوصف كيفية معالجتها. على سبيل المثال، يمكن تحديد المحلل اللغوي المطلوب استدعاؤه من خلال نوع الوسائط . [ 1 ]
  • الوسائط المتعددة كمحرك لحالة التطبيق ( HATEOAS ) - بعد الوصول إلى عنوان URI أولي لتطبيق REST - على غرار مستخدم الويب الذي يصل إلى الصفحة الرئيسية لموقع ويب - يجب أن يكون عميل REST قادرًا على استخدام الروابط التي يوفرها الخادم بشكل ديناميكي لاكتشاف جميع الموارد المتاحة التي يحتاجها. ومع استمرار الوصول، يستجيب الخادم بنص يتضمن روابط تشعبية لموارد أخرى متاحة. لا حاجة لتضمين العميل معلومات ثابتة حول بنية الخادم. [ 11 ]

نماذج التصنيف

تم تطوير العديد من النماذج للمساعدة في تصنيف واجهات برمجة تطبيقات HTTP وفقًا لمدى التزامها بمبادئ تصميم REST المختلفة، مثل

انظر أيضاً

مراجع

  1. 1 2 3 4 5 6 فيلدينغ، روي توماس (2000). "الفصل 5: نقل الحالة التمثيلية (REST)" . الأنماط المعمارية وتصميم بنى البرمجيات الشبكية (أطروحة دكتوراه). جامعة كاليفورنيا، إرفاين. مؤرشف من الأصل بتاريخ 13 مايو 2021. تم الاطلاع عليه بتاريخ 17 أغسطس 2004 .
  2. فيلدينغ، روي ت. (20 أكتوبر 2008). "يجب أن تكون واجهات برمجة تطبيقات REST مدفوعة بالنصوص التشعبية" . roy.gbiv.com. مؤرشف من الأصل في 18 مارس 2010. تم الاطلاع عليه في 6 يوليو 2016 .
  3. كولدري، نيك (2012). الإعلام، المجتمع، العالم: النظرية الاجتماعية وممارسة الإعلام الرقمي . لندن: دار بوليتي للنشر. ص 2. ISBN  9780745639208أُرشف من المصدر الأصلي بتاريخ 27 فبراير 2024. تم الاطلاع عليه بتاريخ 9 يونيو 2021 .
  4. 1 2 فيلدينغ، روي توماس (2000). "الفصل 6: الخبرة والتقييم" . الأنماط المعمارية وتصميم بنى البرمجيات الشبكية (أطروحة دكتوراه). جامعة كاليفورنيا، إرفاين. مؤرشف من الأصل بتاريخ 26 مارس 2023. تم الاطلاع عليه بتاريخ 21 يونيو 2023 . 
  5. "فيلدينغ يناقش تعريف مصطلح REST" . groups.yahoo.com. مؤرشف من الأصل في 5 نوفمبر 2015. تم الاطلاع عليه في 8 أغسطس 2017 .
  6. فيلدينغ، روي توماس (2000). "الفصل 4: تصميم بنية الويب: المشكلات والرؤى" . الأنماط المعمارية وتصميم بنى البرمجيات القائمة على الشبكة (أطروحة دكتوراه). جامعة كاليفورنيا، إرفاين . تاريخ الاسترجاع: 28 يناير 2025 .{{cite thesis}}: CS1 maint: url-status ( link )
  7. 1 2 إيرل، توماس؛ كارلايل، بنجامين؛ باوتاسو، سيزار؛ بالاسوبرامانيان، راج (2012). "5.1". بنية الخدمات الموجهة مع REST: المبادئ والأنماط والقيود لبناء حلول المؤسسات باستخدام REST . أبر سادل ريفر، نيو جيرسي: برنتيس هول. ISBN 978-0-13-701251-0.
  8. 1 2 فيلدينغ، روي توماس (2000). "الفصل الثاني: بنى التطبيقات القائمة على الشبكة" . الأنماط المعمارية وتصميم بنى البرمجيات القائمة على الشبكة (أطروحة دكتوراه). جامعة كاليفورنيا، إرفاين. مؤرشف من الأصل بتاريخ 16 ديسمبر 2014. تم الاطلاع عليه بتاريخ 12 أبريل 2014 .
  9. ريتشاردسون، ليونارد؛ روبي، سام (2007). خدمات الويب RESTful . سيباستوبول، كاليفورنيا: أورايلي ميديا. ISBN 978-0-596-52926-0.
  10. "ما هي واجهة برمجة تطبيقات REST؟" . www.visual-paradigm.com . مؤرشف من الأصل بتاريخ 24-02-2024 . تم الاطلاع عليه بتاريخ 24-02-2024 .
  11. غوبتا، لوكيش (2 يونيو 2018). "REST HATEOAS" . دليل REST API . RESTfulAPI.net. مؤرشف من الأصل في 7 أبريل 2019. تم الاطلاع عليه في 10 مارس 2019 .
  12. "تصنيف واجهات برمجة تطبيقات HTTP" . algermissen.io . مؤرشف من الأصل بتاريخ 29-01-2023 . تم الاطلاع عليه بتاريخ 29-01-2023 .
  13. إيفان سلفادوري، فرانك سيكويرا (يونيو 2015). "نموذج نضج لواجهات برمجة تطبيقات الويب الدلالية RESTful" . المؤتمر: خدمات الويب (ICWS)، المؤتمر الدولي IEEE لعام 2015. نيويورك. مؤرشف من الأصل في 27 فبراير 2024. تم الاطلاع عليه في 14 ديسمبر 2020 عبر ResearchGate.

للمزيد من القراءة