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

ایجاد API Reponse راحت تر در لاراول


دریافت یک API Response با چارچوب و قاعده مشخص می تواند برای تیم فرانت اند مفید باشد.

پکیج Apiful می تواند راه گریزی برای پیاده سازی API Response های شخصی سازی شده باشد.

برای شروع کار اول پکیج را نصب کنید:

composer require prodemmi/laravel-apiful

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

Success Responses

public function index(Request $request)
{

// Or
return apiful()->success();
// With message and data
return apiful($data)->withMessage("This is message")->success();
// Or
return apiful()->withData($data)->withMessage("This is message")->success();

}

پاسخ:

{
"status": "success",
"status_code": 200,
"message": "This is message",
"data": [...],
"meta": []
}

Error Responses

public function index(Request $request)
{

try {

return apiful()->success();

}catch (\Exception $e){

return apiful()->exception($e);
// Or
return apiful($e);

}

}

پاسخ:

{
"status": "error",
"status_code": 500,
"meta": [],
"message": "This is exception message",
"errors": {
"trace": [... ],
"file": "ApiController.php",
"line": 21
}
}

با تغییر فایل کانفیگ apiful.php می توان ارسال Trace و File و Line را غیر فعال کرد:

'errors' => [
'trace' => false,
'file' => false,
'line' => false
]

دیگر متود های ارسال ارور:

apiful()->badRequest();
apiful()->unauthorized();
apiful()->forbidden();
apiful()->internal();
apiful()->notAcceptable();



ایجاد Response شخصی سازی شده

با استفاده از دکوریتور ها میتوانید این کار را انجام دهید ابتدا یک دکوریتور بسازید:

php artisan make:decorator UserDecorator

فایل دکوریتور در مسیر app/Http/Decorators/UserDecorator را باز کنید و داخل متود toArray مدل Response که میخواهید را بنویسید:

<?php

namespace App\Http\Decorators;

use Prodemmi\Apiful\ApifulDecorator;

class َUserDecorator implements ApifulDecorator
{

public function toArray(array $response) : array
{

return [
'success' => true,
'message' => data_get($response, 'message', ''),
'users' => data_get($response, 'data', [])
];

}

}

بعد از آن باید دکوریتور خود را به فایل کانفیگ اضافه کنید:

'decorators' => [
...
'users' => \Prodemmi\Apiful\Decorators\UserDecorator::class // New decoration
]

حالا از دکوریتور در هر کجا می توانید استفاده کنید:

return apiful()->withDecorator('users')->withData($users);
// Or
return apiful()->withDecorator(UserDecorator::class)->withData($users);

برای دیدن اطلاعات بیشتر به صفحه اصلی پکیج بروید.

laravelapiلاراولبرنامه نویسی
علاقه مند به یادگیری مباحث تکنولوژی و نرم افزار
شاید از این پست‌ها خوشتان بیاید