استراحة

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

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

مبدأ

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

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

تاريخ

روي فيلدينج يتحدث في مؤتمر 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 للتطبيقات القائمة على الشبكة، وخاصة تطبيقات العميل والخادم. ولكن أكثر من ذلك، تم تصميمه للاستخدام على نطاق الإنترنت، لذا يجب أن يكون الاقتران بين وكيل المستخدم (العميل) والخادم الأصلي فضفاضًا قدر الإمكان لتسهيل التبني على نطاق واسع.

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

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

تؤثر قيود النمط المعماري REST على الخصائص المعمارية التالية: [1] [6]

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

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

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

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

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

واجهة موحدة

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

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

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

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

  • نموذج ريتشاردسون للنضج
  • تصنيف واجهات برمجة التطبيقات المستندة إلى HTTP [11]
  • نموذج النضج WS 3 [12]

انظر أيضا

مراجع

  1. ^ abcdef Fielding, Roy Thomas (2000). "الفصل 5: نقل الحالة التمثيلية (REST)". الأنماط المعمارية وتصميم هياكل البرمجيات القائمة على الشبكة (دكتوراه). جامعة كاليفورنيا، إيرفين. مؤرشف من الأصل في 2021-05-13 . تم الاسترجاع في 2004-08-17 .
  2. ^ فيلدينج، روي ت. (2008-10-20). "يجب أن تكون واجهات برمجة تطبيقات REST مدفوعة بالنص التشعبي". roy.gbiv.com. مؤرشف من الأصل في 2010-03-18 . تم الاسترجاع في 2016-07-06 .
  3. ^ كولدري، نيك (2012). وسائل الإعلام والمجتمع والعالم: النظرية الاجتماعية وممارسة وسائل الإعلام الرقمية. لندن: بوليتي برس. ص 2. ISBN 9780745639208. تم أرشفة النسخة الأصلية في 2024-02-27 . تم استرجاعها في 2021-06-09 .
  4. ^ ab Fielding, Roy Thomas (2000). "الفصل 6: التجربة والتقييم". الأنماط المعمارية وتصميم هياكل البرمجيات القائمة على الشبكات (دكتوراه). جامعة كاليفورنيا، إيرفين. مؤرشف من الأصل في 2023-03-26 . تم الاسترجاع في 2023-06-21 .
  5. ^ "Fielding يناقش تعريف مصطلح REST". groups.yahoo.com. مؤرشف من الأصل في 5 نوفمبر 2015. تم الاسترجاع 2017-08-08 .
  6. ^ ab Erl, Thomas; Carlyle, Benjamin; Pautasso, Cesare; Balasubramanian, Raj (2012). "5.1". SOA مع REST: المبادئ والأنماط والقيود لبناء حلول مؤسسية مع REST . Upper Saddle River, New Jersey: Prentice Hall. ISBN 978-0-13-701251-0.
  7. ^ ab Fielding, Roy Thomas (2000). "الفصل 2: ​​هياكل التطبيقات القائمة على الشبكة". الأنماط المعمارية وتصميم هياكل البرمجيات القائمة على الشبكة (دكتوراه). جامعة كاليفورنيا، إيرفين. مؤرشف من الأصل في 2014-12-16 . تم الاسترجاع في 2014-04-12 .
  8. ^ ريتشاردسون، ليونارد؛ روبي، سام (2007). خدمات الويب RESTful . سيباستوبول، كاليفورنيا: أوريلي ميديا. ISBN 978-0-596-52926-0.
  9. ^ "ما هي واجهة برمجة التطبيقات REST؟". www.visual-paradigm.com . مؤرشف من الأصل في 2024-02-24 . تم الاسترجاع 2024-02-24 .
  10. ^ Gupta, Lokesh (2 يونيو 2018). "REST HATEOAS". REST API Tutorial . RESTfulAPI.net. مؤرشف من الأصل في 7 أبريل 2019 . تم الاسترجاع في 10 مارس 2019 .
  11. ^ "تصنيف واجهات برمجة التطبيقات HTTP". algermissen.io . مؤرشف من الأصل في 2023-01-29 . تم الاسترجاع 2023-01-29 .
  12. ^ إيفان سالفادوري، فرانك سيكويرا (يونيو 2015). "نموذج نضج لواجهات برمجة تطبيقات الويب الدلالية RESTful". المؤتمر: خدمات الويب (ICWS)، مؤتمر معهد مهندسي الكهرباء والإلكترونيات الدولي لعام 2015. نيويورك. مؤرشف من الأصل في 2024-02-27 . تم الاسترجاع في 2020-12-14 – عبر Researchgate.


قراءة إضافية

  • باوتاسو، سيزار؛ وايلد، إريك؛ ألاركون، روزا (2014)، REST: مواضيع بحثية متقدمة وتطبيقات عملية، سبرينغر، رقم ISBN 9781461492986
  • باوتاسو، سيزار؛ زيمرمان، أولاف؛ ليمان، فرانك (أبريل 2008)، "خدمات الويب الهادئة مقابل خدمات الويب "الكبيرة"، وقائع المؤتمر الدولي السابع عشر حول شبكة الويب العالمية، ص 805-814، doi :10.1145/1367497.1367606، ISBN 9781605580852، S2CID  207167438
  • فيريرا ، أوتافيو (نوفمبر 2009)، خدمات الويب الدلالية: نهج مريح، IADIS، ISBN 978-972-8924-93-5
  • فاولر، مارتن (2010-03-18). "نموذج ريتشاردسون للنضج: خطوات نحو مجد REST". martinfowler.com . تم الاسترجاع في 2017-06-26 .
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=REST&oldid=1250694921"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate