ماکرو های Response
این صفحه رفتار و ساختار ماکروهای پاسخدهی (Response Macros) در Dorapi و نحوه استفاده آنها را توضیح میدهد. این متدها یک الگوی ثابت، قابل پیشبینی و شفاف برای بازگرداندن پاسخهای API ایجاد میکنند تا Consumer ها بدون سردرگمی بتوانند پاسخها را پردازش کنند.
اهداف Response Macros
- ایجاد ساختار یکپارچه برای پاسخهای موفق و خطا
- سادهسازی پاسخهای CRUD
- پشتیبانی داخلی از Pagination به سبک Dorapi
- جداسازی شفاف
code,message,data,errors
نکته
این ماکروها روی Illuminate\Support\Facades\Response ثبت میشوند.
success ساختار پاسخ موفق
امضای متد
use Symfony\Component\HttpFoundation\Response as HttpFoundation;
Response::success(
object $code = SystemMessage::SUCCESS,
?string $message = null,
mixed $data = null,
int $httpStatus = HttpFoundation::HTTP_OK,
bool $flattenData = false,
bool $hasPagination = false
);
توضیحات پارامترها
| پارامتر | توضیح |
|---|---|
code | مقدار enum از SystemMessage برای اعلام وضعیت منطقی عملیات |
message | پیام خوانا برای کاربر |
data | داده اصلی پاسخ |
httpStatus | وضعیت HTTP مانند 200 یا 201 یا 202 |
flattenData | اگر true باشد، دادهها در لایه اصلی پاسخ ادغام میشوند |
hasPagination | در صورت فعال بودن، ساختار خروجی با PaginationResource مربوط به Dorapi ایجاد میشود |
نمونه خروجی معمولی
{
"code": "SUCCESS",
"message": "Done.",
"data": {
"id": 1,
"name": "Example"
}
}
نمونه خروجی در حالت flatten
{
"code": "SUCCESS",
"message": "Done.",
"id": 1,
"name": "Example"
}
صفحهبندی (Pagination) در Dorapi
زمانی که مقدار hasPagination برابر با true باشد:
- دادهی ورودی به طور خودکار توسط
PaginationResourceمدیریت میشود. - ساختار خروجی به صورت خودکار با فعال بودن
flattenDataبرمیگردد (نیازی به مقداردهی دستی نیست).
نمونه استفاده
return Response::success(
data: $items,
hasPagination: true
);
پاسخهای CRUD
متد store
برای ایجاد رکورد جدید.
Response::store(?string $message = null, ?array $data = null);
httpStatus = 201 Created- پیام پیشفرض:
It was created successfully
متد update
برای بروزرسانی رکورد.
Response::update(?string $message = null, ?array $data = null);
httpStatus = 202 Accepted- پیام پیشفرض:
Successfully updated
متد destroy
برای حذف رکورد.
Response::destroy(?string $message = null);
httpStatus = 202 Accepted- پیام پیشفرض:
Removed successfully
پاسخ خطا (error)
امضای متد
Response::error(
object $code,
?string $message = null,
?array $errors = null,
int $httpStatus = 400
);
ساختار خروجی
{
"code": "SOME_ERROR",
"message": "Something went wrong.",
"errors": {
"field": ["message"]
}
}
خطای Data Not Found
برای حالتی که داده موردنظر وجود ندارد.
Response::dataNotFound(array $errors = []);
code = SystemMessage::DATA_NOT_FOUNDmessage = Not foundhttpStatus = 404 Not Found