raditzfarhan / laravel-api-response
Laravel 和 Lumen API 响应转换器
v1.2.0
2024-03-05 02:52 UTC
Requires
- php: ^7.4|^8.0
- illuminate/http: ^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^7.0|^8.0|^9.0|^10.0|^11.0
This package is auto-updated.
Last update: 2024-09-05 03:51:00 UTC
README
Laravel API 响应
Laravel 和 Lumen API 响应转换器/格式化器。
要求
- PHP ^7.4 | ^8.0
- Laravel 7, 8, 9 或 10
安装
通过 Composer
$ composer require raditzfarhan/laravel-api-response
配置
Laravel 和 Lumen 的配置略有不同,因此以下是每个框架的说明。
Laravel
编辑 config/app.php
文件并添加以下行以注册服务提供程序
'providers' => [ ... RaditzFarhan\ApiResponse\ApiResponseServiceProvider::class, ... ],
提示:如果您使用的是 Laravel 版本 5.5 或更高版本,您可以跳过此部分的设置,改为使用自动发现功能。
Lumen
编辑 bootstrap/app.php
文件并添加以下行以注册服务提供程序
... $app->register(RaditzFarhan\ApiResponse\ApiResponseServiceProvider::class); ...
您还需要在 bootstrap/app.php
中启用 Facades
.. $app->withFacades(true, [ RaditzFarhan\ApiResponse\Facades\ApiResponse::class => 'ApiResponse' ]); ...
用法
以下代码片段是示例用法
// Success response // using service container $response = app('ApiResponse')->success(); // using alias $response = \ApiResponse::success(); // Failed response $response = \ApiResponse::failed();
响应将返回一个 Illuminate\Http\Response
实例,就像调用 response()
辅助方法一样。
默认情况下,如果未设置,成功将使用 HTTP 200 状态码,失败将使用 HTTP 500 状态码。
典型响应内容如下
成功
{ "status": true, "http_code": 200, "message": "Success." }
失败
{ "status": false, "http_code": 500, "message": "Failed." }
通过链式调用更多方法添加/更改有效负载数据,如下所示
// Example #1 return ApiResponse::httpCode(201)->message('Created new record!')->data(['name' => 'Raditz Farhan', 'country' => 'MY'])->success(); // or can be shorten to return ApiResponse::created(['name' => 'Raditz Farhan', 'country' => 'MY']); // Example #2 return ApiResponse::httpCode(422)->message('Validation error!')->errors(['name' => ['Name field is required.']])->failed(); // or can be shorten to return ApiResponse::validationError(['name' => ['Name field is required.']]);
上述调用将产生以下结果
示例 #1
{ "status": true, "http_code": 201, "message": "Created new record!", "data": { "name": "Raditz Farhan", "country": "MY" } }
示例 #2
{ "status": false, "http_code": 422, "message": "Validation error!", "errors": { "name": [ "Name field is required." ] }, }
使用 collection
方法返回包含 meta
和 links
属性的分页结果
return ApiResponse::collection(App\Post::paginate());
将返回以下结果
{ "status": true, "http_code": 200, "message": "Success.", "data": [ { "id": 1, "title": "First post", "slug": "first-post", "content": "This is the first post", "sort_order": 1, "created_at": "2020-04-21T13:40:45.000000Z", "updated_at": "2020-04-21T13:40:45.000000Z" }, ... ], "meta": { "currenct_page": 1, "last_page": 3, "from": 1, "to": 25, "per_page": 25, "total": 60, "has_more_pages": true }, "links": { "first": "http://your-app-url?page=1", "last": "http://your-app-url?page=3", "prev": null, "next": "http://your-app-url?page=2" } }
除了 created
和 validationError
之外,以下简写方法也适用于您的方便
// return http 400 Bad request error. return ApiResponse::badRequest('Optional message here'); // return http 401 Unauthorized error. return ApiResponse::unauthorized(); // return http 403 Forbidden error. return ApiResponse::forbidden(); // return http 404 Not found error. return ApiResponse::notFound(); // return http 500 Internal server error. return ApiResponse::internalServerError();
提示:向方法传递消息以添加您自己的自定义消息。
变更日志
请参阅 变更日志 以获取有关最近更改的更多信息。
致谢
许可
MIT。请参阅 许可文件 以获取更多信息。