طراحی API خوب نامرئی است: مشتریها بدون درد کارشان راه میافتد. طراحی بد، کارخانهی تیکت پشتیبانی میسازد. این کتابچه است.
اسمها اسم باشند، نه فعل
text
GET /posts # لیست
POST /posts # ساخت
GET /posts/{id} # خواندن
PATCH /posts/{id} # ویرایش جزیی
DELETE /posts/{id} # حذف
کد وضعیتی که معنا دارد
200موفق،201ساختهشد (با هدرLocation)400درخواست خراب،401احراز هویت نشده،403مجاز نیست404پیدا نشد،409تناقض،422اعتبارسنجی شکست خورد429محدودیت نرخ،503موقتاً در دسترس نیست
صفحهبندی درست
json
{
"data": [...],
"meta": { "page": 2, "per_page": 20, "total": 143 }
}
برای دادههای پرتغییر، cursor از offset بهتر است:
text
GET /posts?cursor=eyJpZCI6MzAwfQ&limit=20
خطاها هم قراردادند
json
{
"error": {
"code": "SLUG_TAKEN",
"message": "پستی با این اسلاگ وجود دارد",
"fields": { "slug": "باید یکتا باشد" }
}
}
نسخهبندی
ترجیحاً سازگار جلو برو: هیچوقت فیلدی را نشکن، فیلد جدید اضافه کن. اگر مجبور به شکستن شدی، در مسیر نسخه بده (/v2/posts)، نه در هدر.
قوانینی که از همه مهمترند
API را از دید مصرفکننده طراحی کن. اگر فرانت برای رندر یک صفحه به سه درخواست پشتسرهم نیاز دارد، API باخته است.