🍎 定制统一的输出格式
- PHP >= 8.2
- Laravel ^11.0
composer require mitoop/laravel-api-response
{
"code": 0,
"message": "success",
"data": null
}
{
"code": 0,
"message": "success",
"data": [
{
"id": 1,
"nickname": "admin",
"email": "i@admin.com",
"last_login": "2023-07-29 12:49:16",
"status": true
}
],
"meta": {
"page": 1,
"page_size": 20,
"has_more": false,
"total": 1
}
}
code: 状态码 默认成功为0, 失败为1, 登录失效为-1, 可以通过 `setDefault` 方法修改
message: 提示信息
data: 内容主体
meta: 分页信息
meta.page: 当前分页
meta.page_size: 分页大小
meta.has_more: 是否还有下一页
meta.total: 总数 `paginate` 方法有 total 属性, `simplePaginate` 方法没有
use Mitoop\Http\ResponseTrait;
class Controller extends BaseController
{
use ResponseTrait;
}
包含方法 success
, error
, unauthenticated
三个方法, 分别对应成功, 失败, 登录失效三种情况.
class Controller extends BaseController
{
use ResponseTrait;
public function demo1()
{
return $this->success();
}
public function demo2()
{
return $this->success(['Hello']);
}
public function demo3()
{
return $this->success(User::active()->paginate());
}
public function demo4()
{
return $this->error();
}
public function demo5()
{
return $this->error('自定义错误信息');
}
public function demo6()
{
return $this->unauthenticated('登录信息已失效, 请重新登陆!');
}
}
通过 ResponseCode::setDefault
方法修改默认状态码
use Mitoop\Http\ResponseCode;
ResponseCode::setDefault([
'success' => 200,
'error' => 500,
'unauthenticated' => 0,
]);
支持 API 资源, 只需要
改下继承关系, 其他不需要任何改变.
Tips: 更改下系统默认的 stub
, 每次直接生成好继承关系.
use Illuminate\Http\Request;
use Mitoop\Http\Resources\Resource;
class LoraResource extends Resource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'name' => $this->name,
];
}
}
use Mitoop\Http\Resources\Resource;
namespace App\Http\Resources\User;
use Mitoop\Http\Resources\ResourceCollection;
class LoraCollection extends ResourceCollection
{
}
class Controller extends BaseController
{
public function demo1()
{
return new LoraResource(Lora::find(1));
}
}
通过 render
方法统一处理异常输出格式.
->withExceptions(function (Exceptions $exceptions) {
$exceptions->render(function (NotFoundHttpException $e, Request $request) {
return (new Mitoop\Http\Response())->error('未找到对应数据');
});
})
MIT