سؤال

وبالنظر إلى هذه الخدمة إلى الحصول على معلومات عن الفندق:

> GET /hotel/{id}

< HTTP/1.1 200 OK
< <hotel>
<   <a>aaa</a>
<   <b>aaa</b>
>   <biggie>aaa....I am 300K</biggie >
< </hotel>

المشكلة هي أن biggie هو 300K ونحن لا نريد العودة إلى ذلك مع كل استجابة.ما هو مريح طريقة تحميل كسول هذه القيمة ؟

يجب علينا إعداد الموارد اثنين:

> GET /hotel/{id}

< HTTP/1.1 200 OK
< <hotel>
<   <a>aaa</a>
<   <b>aaa</b>
< </hotel>

و..

> GET /hotel/{id}/biggie

< HTTP/1.1 200 OK
< <biggie>
<   <val>aaa....I am 300K</val>
< </biggie>

و يمكنك فقط طلب GET /hotel/{id}/biggie عندما كنت حقا بحاجة إلى أن البيانات ؟

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

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

المحلول

لا تنسى، والوسائط الفائقة هو صديقك.

GET /hotel/{id}

HTTP/1.1 200 OK
<hotel Id="99">
  <a>aaa</a>
  <b>aaa</b>
  <biggieLink href="/Hotel/99/Biggie"/>
</hotel>

وأو يمكنك القيام به حتى

GET /hotel/{id}

HTTP/1.1 200 OK
<hotel Id="99">
  <a>aaa</a>
  <b>aaa</b>
  <biggieSynopsis href="/Hotel/99/Biggie">
    <title>Here is a a summary of biggie</title>
  </biggieSynopsis
</hotel>

نصائح أخرى

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

أعتقد الحل الخاص بك على ما يرام.لا يوجد إجابة نموذجية, ولكن ثلاثة احتمالات هي:

  1. ترسل جميع الصفات ، في كل مرة
  2. إرسال الصفات على حدة على النحو المطلوب (/{id}/a, /{id}/b, /{id}/biggie)
  3. ترسل جميع الصفات ما عدا غير عادية منها ، كما توحي لك.

1 و 2 هي جميلة لأنها موحدة ، ولكن 3 المنطقي في قضيتك ، أو في الحالة التي يكون فيها قطعة واحدة من البيانات يتطلب بيانات اعتماد تسجيل الدخول ، على سبيل المثال.

(2 أيضا عيب تتطلب تشديد اقتران مع الطالب الذي لديه معرفة اسم كل سمة.)

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