ما بقية وضع/POST/حذف المكالمات يجب أن تعود قبل الاتفاقية ؟

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

  •  28-09-2019
  •  | 
  •  

سؤال

  1. وفقا ل "بقية أيديولوجية" ما ينبغي أن يكون في استجابة الجسم عن وضع/POST/حذف طلبات ؟

  2. ماذا عن عودة رموز ؟ هو HTTP_OK بما فيه الكفاية ؟

  3. ما هو سبب هذه الاتفاقيات ؟

لقد وجدت وظيفة جيدة واصفا المنصب/وضع الاختلافات: آخر مقابل وضع لكنه لا يزال لا يجيب على سؤالي.

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

المحلول

سامح الانفلان ، ولكن إذا كنت تفعل الراحة فوق http ثم RFC7231 يصف بالضبط ما هو السلوك المتوقع من GET ، وضع ، النشر والحذف.

تحديث (3 يوليو 14):
لا تحدد مواصفات HTTP عمدا ما يتم إرجاعه من البريد أو الحذف. تحدد المواصفات فقط ما يجب تحديده. يتم ترك الباقي حتى المنفذ للاختيار.

نصائح أخرى

بشكل عام ، فإن الاتفاقيات "تعتقد أنك فقط تقدم صفحات الويب".

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

لم أكن سعيدًا أبدًا بما يجب أن يعود عليه حذف (ينتج الكود حاليًا HTTP 204 وجسم فارغ في هذه الحالة).

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

النجاح يمكن أن يشار إليه HTTP_OK ، نعم.

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

بحلول RFC7231 لا يهم وقد يكون فارغًا

كيف نقوم بتنفيذ الحل القائم على API JSON في المشروع:

post/put: مخرجات سمات كائن كما في GET (مرشح الحقل/العلاقات ينطبق نفس الشيء)

حذف: البيانات تحتوي فقط على NULL (لتمثيل كائن مفقود)

حالة الحذف القياسي: 200

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