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"
}