امین علایی
امین علایی
خواندن ۲ دقیقه·۵ سال پیش

نکاتی درباره طراحی REST API

REST API
REST API


چند سال تجربه خودم در طراحی و پیاده سازی REST API ها و کار در تیم‌های مختلف و با Legacy Code ها، خیلی پیش اومده که API هایی دیدم که خیلی از استانداردها دور بوده. با سرچ کردن درباره Best Practice ها و تجربه خودم یه لیست آماده کردم از نکاتی درباره طراحی REST API ها که اگه رعایت بشه انتقال کدها و استفاده از اونها رو راحت‌تر میکنه.

  • در URL ها بهتره از اسم استفاده کنید و از فعل استفاده نکنید. مثلا استفاده از /api/users/ بهتر از استفاده از /api/users/create/ هست.
  • در URL یا از اسم‌های مفرد یا اسم‌های جمع استفاده کنید. هر کدوم رو انتخاب می‌کنید مهم نیست ولی در تمام پروژه فقط از یکی استفاده کنید. مثلا یا /api/users/ رو انتخاب کنید یا /api/user/ ولی ثبات رو در انتخاب نام‌ها رعایت کنید
  • به جای استفاده از فعل در URL باید از متدهای مختلف HTTP استفاده کنید. مثلا:

متد GET: برای دریافت آیتم‌ها

متد POST: برای ساخت آیتم‌ها

متد UPDATE: برای آپدیت آیتم‌ها

متد DELETE: برای حذف آیتم‌ها

  • پروتکل HTTP متد‌های GET, OPTIONS, HEAD, TRACE رو به نام متد‌های امن معرفی می‌کنه که این متدها نباید بتونن وضعیت سرور رو تغییر بدن. از این متدها باید درست استفاده کنید.
  • رابطه‌ها باید از طریق زیر URL ها فراخوانی شوند. مثلا برای دریافت لیست عکس‌های یک کاربر باید یک URL مثل /api/users/{id}/photos/ داشته باشید.
  • ورژن‌بندی API یا باید در URL یا در HEADER های ریکوئست باشه. مثلا /api/v1/users/ ورژن‌بندی در URL داره.
  • فیلتر، sort و pagination باید فقط در ریکوئست‌های GET قابل دسترس باشه. مثلا:

Filter: /api/v1/users?name=Ali

Sort: /api/v1/users?order_by=name&order=desc

Pagination: /api/v1/users?page=1&per_page=10

  • احراز هویت کاربران بهتره با استفاده از JWT و احراز هویت سرویس‌های متصل به API با استفاده از API KEY انجام بشه.
  • از Status Code های HTTP و معنی اونها باید درست استفاده کنید. لیست کامل کدها در اینجا هست. مثلا:

1xx: از کدهای سری یک برای پاسخ‌های اطلاعاتی

2xx: سری کدهای دو برای پاسخ‌های موفقیت آمیز

3xx: سری کدهای سه برای Redirect

4xx: سری کدهای چهار برای خطای سمت کاربر

5xx: سری کدهای پنج برای خطای سمت سرور

rest apiنرم افزارطراحی نرم افزاربرنامه نویسی
شاید از این پست‌ها خوشتان بیاید