آیا الگو یا best practice معتبری برای امضای URL در سرویس های REST وجود دارد؟

+3 رأی
میانگین بازدید روزانه 0.381,265 بازدید

آیا الگو یا best practice معتبری برای امضای URL در سرویس های REST وجود دارد؟ برای مثال یک سرویس REST که می خواهد یک موجودیت خاص را ذخیره کند بهتر است چه URL داشته باشد و یا متد HTTP آن بهتر است GET, POST و یا ... باشد.

سوال 9 سال قبل در تالار برنامه نویسی توسط Saeed Zarinfam (1,044 امتیاز)

4 جواب

+4 رأی
 
بهترین جواب

url های یک سرویس REST خوب باید ساده باشند و از الگوهایی پیروی کنند تا نیاز به  مستندات را تا حد امکان کاهش دهد.

در url ها از اسم استفاده کنید. از نظر مفهومی بهتر است اسم به صورت جمع بیاید و نه مفرد:

/users
/books/12345

در url ها از فعل استفاده نکنید. استفاده از فعل پادالگو است:

/getAllUsers
/getAdminUsers
/updateBook/12345

استفاده از متدهای HTTP مناسب برای هر عملیات:

  • POST: ایجاد
  • GET: خواندن
  • PUT: ویرایش
  • DELETE: حذف

مثال:

منبع POST GET PUT DELETE
/books ایجاد یک کتاب فهرست کتاب‌ها ویرایش تمام کتاب‌ها حذف تمام کتاب‌ها
/books/2 خطا کتاب (با شناسه 2)

ویرایش کتاب در صورت وجود و در غیراینصورت خطا

حذف کتاب

همچنین برای عملیات جستجو بهتر است از query string استفاده شود:

/books?author=ghanbar&category=sport
جواب 9 سال قبل توسط mofarn (1,432 امتیاز)
انتخاب شده در 9 سال قبل توسط Saeed Zarinfam
برای مثال کتاب ها به نظر شما نامگذاری زیر هم درست می باشد ؟
books/categories/{categoryId}
+1 رأی

در برخی از موارد از آنجایی که برای ایجاد هیچگاه id ارسال نمی شود و همچنین تقریبا در هیچ برنامه ای امکان ویرایش کردن تمامی داده ها به صورت همزمان در اختیار کاربر قرار داده نمی شود. امضای زیر پیشنهاد داده می شود:

نمونه امضای متد های ReST
URL / متد HTTP GET POST DELETE
/books دریافت تمام کتابها ایجاد کتاب جدید

حذف تمام کتابها

(معمولا پیاده سازی نمیشود)

/books/:id دریافت کتاب با شناسه مشخص شده ویرایش کتاب با شناسه مشخص شده حذف کتاب با شناسه مشخص شده

 

جواب 8 سال قبل توسط kashi (7,164 امتیاز)
+1 رأی

Best Practices for Designing a Pragmatic RESTful API یکی از بهترین ها در این زمینه است. خیلی جزئیات خوبیو گفته.

جواب 8 سال قبل توسط Saeed Zarinfam (1,044 امتیاز)
ویرایش 7 سال قبل توسط Saeed Zarinfam
+1 رأی
  1. JSON API - JSON API covers creating and updating resources as well, not just responses.
  2. JSend - Simple and probably what you are already doing.
  3. OData JSON Protocol - Very complicated.
  4. HAL - Like OData but aiming to be HATEOAS like.
  5. Google JSON guide
جواب 6 سال قبل توسط NabiKAZ (30 امتیاز)
ویرایش 6 سال قبل توسط NabiKAZ

سوال های مشابه

+1 رأی
0 جواب میانگین بازدید روزانه 0.17568 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.16450 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.25322 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.29946 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.34461 بازدید
+2 رأی
4 جواب میانگین بازدید روزانه 0.33804 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.642,110 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.17502 بازدید
+2 رأی
1 جواب میانگین بازدید روزانه 0.2139 بازدید
سوال 1 سال قبل در تالار برنامه نویسی توسط bahrambb (308 امتیاز)
کانال تلگرام جواب یاب
...