+3 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

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

4 پاسخ

+4 امتیاز
قبل توسط (1.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
قبل توسط (308 امتیاز)
برای مثال کتاب ها به نظر شما نامگذاری زیر هم درست می باشد ؟
books/categories/{categoryId}
+1 امتیاز
قبل توسط (7.2هزار امتیاز)

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

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

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

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

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

 

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
ویرایش شده قبل توسط

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

+1 امتیاز
قبل توسط (30 امتیاز)
ویرایش شده قبل توسط
  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

سوالات مشابه

+1 امتیاز
0 پاسخ 726 بازدید
0 امتیاز
0 پاسخ 613 بازدید
+1 امتیاز
1 پاسخ 483 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
+1 امتیاز
1 پاسخ 713 بازدید
+2 امتیاز
4 پاسخ 1.3هزار بازدید
0 امتیاز
1 پاسخ 2.3هزار بازدید
+2 امتیاز
1 پاسخ 339 بازدید
سوال شده 3 سال قبل در برنامه نویسی توسط bahrambb (308 امتیاز)
...