REST API Design: أخبر الخادم "بتحديث" مجموعة من الموارد

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

  •  26-09-2019
  •  | 
  •  

سؤال

لدينا بعض الموارد على خادم REST منظم مثل هذا:

  • /someResources/foo
  • /someResources/bar
  • /someResources/baz

أين someResource هو تمثيل خادم لكائن موزع بعيدا.

نريد أن نطلب من الخادم "تحديث" تمثيله لهذا "الكائن الموزع" من خلال النظر إليه في الشبكة وتحديث ذاكرة التخزين المؤقت للخادم ، لا يمكننا ببساطة وضع القيمة الجديدة.

ما هي طريقة الراحة النظيفة لهذا؟

أ) هل ينشر إلى أ /refreshes/ "طلب تحديث" جديد؟

ب) هل هو وضع (مع وثيقة فارغة) http://ip/someResources ?

ج) شيء آخر؟

أحب (أ) لأنه سيعطينا معرفًا لتحديد وتتبع أمر التحديث ، لكنني قلق من أننا نخلق الكثير من الموارد. اي نصيحه؟

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

المحلول

أود أن أذهب مع نهج موارد "التحديث". هذا له فوائد رئيسية

(أ) مثل عمليات دورة الحياة (نسخة ، استنساخ ، تحرك) الغرض من التحديث متعامد مع وظيفة المورد الأساسي ، لذا يجب أن تكون منفصلة تمامًا

(ب) يمنحك وسيلة للتحقق من تقدم التحديث - ستوفر لك الحالة الخارجية لمورد التحديث سمة "حالة" أو "تقدم".

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


نهج أفضل

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


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

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

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

كريس

نصائح أخرى

يبدو أن التخزين المؤقت لـ HTTP يسمح بذلك. http://www.w3.org/protocols/rfc2616/rfc2616-sec13.html#sec13.1.6

قم بتعيين رأس Max-age = 0 وهذا سوف يرشد الخادم بأن العميل يريد إصدارًا جديدًا. بهذه الطريقة يمكنك متابعة استخدام GET.

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