سؤال

تقوم REST API الخاصة بي بإرجاع JSON.

أقوم حاليًا بإرجاع نص/عادي كنوع MIME، لكنه يبدو مضحكًا.هل يجب أن أعود application/x-javascript أو نوع آخر؟

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

{ result: "fail", errorcode: 1024, errormesg: "That sucked. Try again!" }

هل يجب أن يظل رمز حالة HTTP عند 200 OK?

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

المحلول

JSON المواصفات تشير application/json، ويبدو أن تكون معتمدة من قبل <ل أ href = "http://www.ietf.org/rfc/rfc4627.txt" يختلط = "noreferrer"> IETF و <لأ href = "http://www.iana.org/assignments/media- أنواع / التطبيق / "يختلط =" noreferrer "> IANA التسجيل .

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

على تحديث 2014/06/27 : لأيام حيث العملاء (متصفحات) يعمل فقط مع استجابة 200 هي الماضي البعيد والمشورة السائدة لابيس مريحة لاستخدام رموز استجابة HTTP المناسبة للاستجابة ، 2xx للاستجابات ناجحة (على سبيل المثال 201 مكون لPUT، 204 لا المحتوى لDELETE). و4XX و5XX لجميع الظروف خطأ، بما في ذلك من API نفسها

نصائح أخرى

وأنا أفضل أن الرد مع كل من حالة الخطأ HTTP وتطبيق حمولة محددة.

لا، يجب أن لا عودة 200 في حالة خطأ.

وكل شيء على مايرام لتكرار رمز الحالة، أو أن تتضمن رمز الخطأ أكثر تفصيلا في حمولة استجابة.

السليم Content-type العودة هي application/json, ، وفق آر إف سي 4627, ، والذي يسجل أيضًا نوع MIME IANA (وفي الواقع، يظهر على صفحة IANA).بالطبع، إذا كنت ستكتب عميلاً، فسوف ترغب في أن تكون أكثر ليبرالية فيما تقبله، وأن تقبل أيضًا الآخرين مثل text/json و text/x-json.

الآن، إذا كان هناك خطأ يجب عليك لا إرجاع HTTP 200، وهذا في الأساس غير RESTful.أعلم أنه في بعض الأحيان لا توجد تطابق تام لخطأك، ولكن اختر أقرب أخطاء 4XX (خطأ العميل) أو 5XX (خطأ الخادم) في RFC 2616 الأقسام 10.4-10.5، وكن أكثر دقة في JSON.

وإذا كان عن طريق "API REST" تقصد أنك تريد أن تتبع بنية REST ثم نوع الوسائط لاستخدام تتحدد وظيفة تريد كشف من خلال API REST. هل تريد أن تكون قادرة على إنشاء كائنات جديدة؟ الاستعلام عن قائمة الكائنات؟ تحرير كائن؟ إذا كان الأمر كذلك، ثم نوع وسائط راحة جيدة لاستخدام قد يكون vnd.collection + سلمان لأنه يعرف واجهة النص التشعبي صلة لمعالجة مجموعة من الكائنات سلمان.

ملحوظة: A API مريحة يمكن استخدام نوع وسائط التطبيق / سلمان، ولكن هذا النوع وسائل الاعلام لايوجد النص التشعبي ربط واجهة مريحة، لذلك سيكون بمثابة نقطة النهاية في تغيير حالة.

وكما انها مقبولة تماما لمتابعة بنية API على شبكة الإنترنت، حيث تعود المكالمات HTTP RPC كائنات التطبيق / سلمان، ومكالمات HTTP RPC أخرى تلاعب تلك الأشياء، وليس هناك أي واجهة الارتباط التشعبي لاستخدام والتنقل التغييرات الدولة. ولكن هذا ليس بقية.

وأنا أحب هذا الوصف من REST (من خالق REST):

REST APIS يجب النص التشعبي مدفوعة

<اقتباس فقرة>   

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

وأيضا، من مناقشة هذا المنصب هو هذا مثال على تطبيق مريحة: المفقودة بنين ق البريد المزعج-E REST تطبيق

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