پرش به مطلب اصلی

مبانی API نسخه 3

این سند مروری بر مفاهیم و ویژگی‌های اساسی API نسخه 3 ارائه می‌دهد.

شروع به کار

اطلاع

نسخه V3 API بر اساس رویکردی متفاوت نسبت به V1 است، با مفاهیم جدیدی که برای مدیریت بهتر سرویس‌های وب طراحی شده‌اند. این سند این مفاهیم را معرفی می‌کند و راهنمایی‌هایی برای توسعه با آن‌ها ارائه می‌دهد.

در این نسخه، از دو مفهوم کلیدی استفاده می‌شود: ترنسفورمرها و ریپوزیتوری‌ها. این اجزا پایه و اساس معماری API نسخه 3 را تشکیل می‌دهند.

ساختار URL

API نسخه 3 از یک الگوی ساختار URL ثابت پیروی می‌کند:

https://api.example.com/api/{audience}/{version}/{module}/{resource}/{id?}

که در آن:

  • audience: مخاطب هدف را نشان می‌دهد (client یا admin)
  • version: نسخه API (v3)
  • module: نام ماژول (مثلاً cms، user، system)
  • resource: منبع خاص (مثلاً post، category، user)
  • id: شناسه منبع اختیاری برای عملیات‌های منبع خاص

مثال‌ها

نقاط پایانی کلاینت
# لیست تمام پست‌ها
GET https://api.example.com/api/client/v3/cms/post

# دریافت یک پست خاص
GET https://api.example.com/api/client/v3/cms/post/123

# جستجوی پست‌ها
GET https://api.example.com/api/client/v3/cms/post?search=hello

احراز هویت

تمام درخواست‌های API نیاز به احراز هویت دارند. API از احراز هویت مبتنی بر توکن استفاده می‌کند.

دریافت توکن

برای دریافت توکن، باید به نقطه پایانی ورود درخواست ارسال کنید:

POST https://api.example.com/api/client/v3/auth/login

با بدنه درخواست:

{
"email": "user@example.com",
"password": "your_password"
}

پاسخ شامل توکن دسترسی خواهد بود:

{
"data": {
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"expires_at": "2025-06-26T18:42:13+03:30"
}
}

استفاده از توکن

توکن را در هدر Authorization با پیشوند Bearer اضافه کنید:

GET https://api.example.com/api/client/v3/cms/post
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...

پاسخ‌های استاندارد

تمام پاسخ‌های API از یک فرمت استاندارد پیروی می‌کنند:

{
"data": {
// داده‌های اصلی پاسخ
},
"meta": {
// اطلاعات اضافی مانند صفحه‌بندی
}
}

مثال پاسخ

{
"data": [
{
"id": 1,
"title": "عنوان اول",
"content": "محتوای پست اول"
},
{
"id": 2,
"title": "عنوان دوم",
"content": "محتوای پست دوم"
}
],
"meta": {
"pagination": {
"total": 50,
"count": 2,
"per_page": 2,
"current_page": 1,
"total_pages": 25
}
}
}

پارامترهای درخواست

API از پارامترهای درخواست استاندارد برای فیلتر کردن، مرتب‌سازی و صفحه‌بندی نتایج پشتیبانی می‌کند:

پارامترنوعتوضیحاتمثال
pageعددشماره صفحه برای صفحه‌بندیpage=2
limitعددتعداد نتایج در هر صفحهlimit=25
searchرشتهجستجوی عمومی در تمام فیلدهای قابل جستجوsearch=hello
searchJoinرشتهنحوه ترکیب چندین عبارت جستجو (and یا or)searchJoin=and
filterآرایهفیلتر بر اساس مقادیر فیلد خاصfilter[]=status:published
orderByرشتهفیلد برای مرتب‌سازی نتایجorderBy=created_at
sortedByرشتهجهت مرتب‌سازی نتایج (asc یا desc)sortedBy=desc
includesرشتهموجودیت‌های مرتبط برای گنجاندن در پاسخincludes=author,category,tags

مدیریت خطا

در صورت بروز خطا، API یک پاسخ خطای استاندارد با کد وضعیت HTTP مناسب برمی‌گرداند:

{
"error": {
"code": "validation_error",
"message": "داده‌های ارائه شده نامعتبر هستند",
"details": {
"title": ["عنوان الزامی است"]
}
}
}

کدهای وضعیت HTTP رایج

کدمعنیتوضیحات
200OKدرخواست موفقیت‌آمیز بود
201Createdمنبع با موفقیت ایجاد شد
400Bad Requestدرخواست نامعتبر است
401Unauthorizedاحراز هویت لازم است
403Forbiddenکاربر احراز هویت شده مجاز به انجام این عمل نیست
404Not Foundمنبع درخواست شده یافت نشد
422Unprocessable Entityخطای اعتبارسنجی
500Internal Server Errorخطای سرور