wamesk / laravel-api-response
Laravel API 响应助手。
1.2.1
2023-11-24 10:27 UTC
Requires
- php: ^8.0|^8.1|^8.2
- laravel/framework: ^9.0|^10.0
README
Laravel 包,用于轻松格式化 API 响应
安装
composer require wamesk/laravel-api-response
用法
对于基本响应,使用类并调用 response() 函数,并传递所需的状态码 (默认 200)。
此函数本身不会发送任何数据,该函数用于最后生成响应并设置状态码。
用法
return ApiResponse::response(201);
响应
{ "data": null, "code": null, "errors": null, "message": null }
对于异常,使用 exception()
函数并传递整个 Exception;
它将检查您的 .env
文件,如果您已启用 APP_DEBUG
。如果为真,它将使用 dd()
php 函数转储异常。如果为假,它将返回带有自定义消息的响应。自定义消息包含文件和行信息。
您可以使用除 response()
之外的所有其他功能。
用法
try { // code } catch (\Exception $exception) { return ApiResponse::exception($exception); }
响应
{ "data": null, "code": null, "errors": null, "message": "Exception found in file C:\\projects\\project\\app\\Http\\Controllers\\v1\\UserController.php on line 33" }
您也可以在响应函数之前添加 message()
函数来传递消息。
用法
return ApiResponse::message('Hello')->response(201);
响应
{ "data": null, "code": null, "errors": null, "message": "Hello" }
您可以使用 code()
函数传递内部代码,这有助于您在发生错误时找到响应。
return ApiResponse::code('1.2')->message('Hello')->response(201);
响应
{ "data": null, "code": "1.2", "errors": null, "message": "Hello" }
如果您未使用 message()
函数但使用 code()
函数,它将尝试将您的代码转换为消息。
您还可以将翻译的前缀作为第二个参数设置 (默认为 'api')。
return ApiResponse::code('1.2', 'user')->response(201); // return "message": "user.1.2" as in Response example return ApiResponse::code('1.2')->response(201); // When not provided second parameter it will use default and return "message": "api.1.2"
响应
{ "data": null, "code": "1.2", "errors": null, "message": "user.1.2" }
当不提供第二个参数时
{ "data": null, "code": "1.2", "errors": null, "message": "api.1.2" }
您可以使用 data()
函数传递数据。
return ApiResponse::data(['id' => 1, 'name' => 'Jhon Jhonson'])->code('1.2')->message('Hello')->response(201);
响应
{ "data": { "id": 1, "name": "Jhon Jhonson" }, "code": "1.2", "errors": null, "message": "Hello" }
如果您想通知前端一些错误,可以使用 errors()
函数。
return ApiResponseDev::errors(['email' => 'Email is required'])->response(201);
响应
{ "data": null, "code": null, "errors": { "email": "Email is required" }, "message": null }
如果您需要在 API 中使用分页,可以使用 collection()
函数而不是 data()
函数。您可以通过传递分页数据来使用此函数,并且您还可以传递资源以获得更好的数据格式 (资源不是必需的)
$users = User::paginate(10); return ApiResponse::collection($users, UserResource::class)->code('1.2')->message('Hello')->response(201);
响应
{ "data": [ { "id": 1, "name": "Jhon Jhonson" }, { "id": 2, "name": "Patrick Jhonson" } ], "links": { "first": "https://:8888/api/v1/test?page=1", "last": "https://:8888/api/v1/test?page=2", "prev": null, "next": "https://:8888/api/v1/test?page=2" }, "meta": { "current_page": 1, "from": 1, "last_page": 3, "links": [ { "url": null, "label": "pagination.previous", "active": false }, { "url": "https://:8888/api/v1/test?page=1", "label": "1", "active": true }, { "url": "https://:8888/api/v1/test?page=2", "label": "2", "active": false }, { "url": "https://:8888/api/v1/test?page=3", "label": "3", "active": false }, { "url": "https://:8888/api/v1/test?page=2", "label": "pagination.next", "active": false } ], "path": "https://:8888/api/v1/test", "per_page": 2, "to": 2, "total": 6 }, "code": "1.2", "errors": null, "message": "Hello" }