mesak / laravel-api-response
构建一个Laravel API响应包
v1.3.2
2023-09-15 02:09 UTC
Requires
- php: ^8.0
README
Laravel Api Response
使用统一回调方法控制API格式
安装
composer require mesak/laravel-api-response
或者,您可以直接在您的 composer.json
文件中将其作为依赖项引用
{ "require": { "mesak/laravel-api-response": "^1.0.0" } }
控制器
更改您的API控制器,扩展 Mesak\LaravelApiResponse\Http\Controllers\Controller
namespace App\Http\Controllers; use Mesak\LaravelApiResponse\Http\Controllers\ApiController as BaseController; class MainController extends BaseController { }
然后您可以返回所有响应
示例
使用分页
class MainController extends BaseController { function index(Request $request) { return \App\Models\User::paginate(15); } }
使用资源
class MainController extends BaseController { function index(Request $request) { $users = \App\Models\User::paginate(15); return \App\Http\Resources\User::collection($users); } }
使用异常
class MainController extends BaseController { function index(Request $request) { $users = \App\Models\User::paginate(15); if( $users->isEmpty() ) { throw new \Exception('No users found'); } return \App\Http\Resources\User::collection($users); } }
使用扩展异常
class MainController extends BaseController { function index(Request $request) { $users = \App\Models\User::paginate(15); if( $users->isEmpty() ) { throw new \Mesak\LaravelApiResponse\Exceptions\BaseException('No users found' ); //statusCode 500 } return \App\Http\Resources\User::collection($users); } }
使用自定义异常
创建您的自定义异常类 app/Exceptions/BadRequestException.php
namespace App\Exceptions; class BadRequestException extends \Mesak\LaravelApiResponse\Exceptions\BaseException { protected $errorCode = 400; protected $statusCode = 400; public function __construct($message = 'Bad Request') { parent::__construct($message); } }
然后您可以在控制器中使用它
use App\Exceptions\BadRequestException; class MainController extends BaseController { function index(Request $request) { $users = \App\Models\User::paginate(15); if( $users->isEmpty() ) { throw new BadRequestException(); //statusCode 400 } return \App\Http\Resources\User::collection($users); } }
不使用ApiController
如果您不想扩展 Mesak\LaravelApiResponse\Http\Controllers\ApiController
,您可以使用
response()->success($data,$statusCode);
response()->error($data,$statusCode);
class MainController extends \App\Http\Controllers\Controller { function index(Request $request) { $users = \App\Models\User::paginate(15); if( $users->isEmpty() ) { return response()->error('no data',400); } $result = \App\Http\Resources\User::collection($users); return response()->success($result); } }
自定义配置
您可以使用自定义的config.php来自定义API架构内容。
php artisan vendor:publish --tag=api-response --force