لماذا تضمين فعل إجراء في URI في تنفيذ REST ينتهك البروتوكول؟

StackOverflow https://stackoverflow.com/questions/2173721

  •  24-09-2019
  •  | 
  •  

سؤال

أجد أنه من الضروري أن نفهم لماذا ينتهك أفعال العمل في URI بروتوكول REST لبناء جملة URI؟ عندما قرأت المقالة التالية ، أشعر أن الكثير من الناس يصدرون الكثير من الضوضاء حول الأفعال ، وأنهم يجب أن يكونوا أكثر ضوضاء حول أنواع المحتوى:

Restwiki: الحد الأدنى من الطرق

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

كيف ينتهك هذا روح المبادئ المعمارية للباقي ، وما هو الحاجز الذي تواجهه من خلال وضع شيء مثل "حذف" في عنوان URL الخاص بك بدلاً من استخدام "الحذف"؟

هل كانت مفيدة؟

المحلول

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

تسمية عناوين URL المستندة إلى الأسماء تجعل من الطبيعي خلق سلوك يتماشى مع الغرض المقصود من GET و PUT و POST و DELETE.

عندما تضع الأفعال في عنوان URL ، يمكن أن تصبح مربكة للغاية لأن فعل HTTP غالبًا ما يكون له سلوك متناقض مع واحد في عنوان URL. تقول قواعد REST إنه يجب عليك احترام فعل HTTP ، ولكن عادةً ما يكون عنوان URL أكثر وصفية بحيث يمكن أن يكون مضللاً.

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

أنت محق تمامًا في أن الناس بحاجة إلى التركيز على أنواع المحتوى أكثر من بنية عنوان URL عند الحديث عن تطبيقات REST.

إن جعل عناوين URL الخاصة بك تشير إلى الأسماء ليس قيدًا راحة ، بل يتعلق بتشجيع الناس على الوقوع في حفرة النجاح.

نصائح أخرى

الباقي ليس بروتوكول ، بل أسلوب. على هذا النحو ، فأنت حر في فعل أي شيء يفي بمتطلباتك.

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

يقترح Rest أنه يجب علينا احتضان HTTP ، وعدم إضافة طبقات من التجريد مثل الصابون أو RPC أو Corba. يمكن اعتبار إضافة أفعال إضافية ، أو إضافتها إلى عنوان URL على أنها ، وإن كانت خفيفة الوزن ، التجريد.

ومع ذلك ، كما ذكرت هذه ، لا يتم دعم متصفحات المساحات المدعومة باستمرار ، أو بعض إصدارات Flash. لذلك قد يكون من الضروري وضعها في عنوان URL في العالم الحقيقي ، إذا كنت تصل إلى جانب العميل.

يجب أن تنظر إلى هذا بعناية على الرغم من أنه قد تكون هناك مشكلات أمنية خطيرة عند إجراء حذف/وضع على عنوان URL.

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

تحقق من هذا المقال لذلك لمزيد من المعلومات:فهم الراحة: الأفعال ورموز الخطأ والمصادقة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top