格式化dingo返回内容
dingo api返回的内容中添加code
和 message
,保持与异常返回的内容格式相一致。
失败会存在code
和 message
,我们只需要关注成功的情况
非分页返回,可以创建一个父类controller,通过调用sucess方法来返回
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests, Helpers;
public function success($data)
{
return $this->response()->array([
'code' => 0,
'message' => 'Success',
'data' => $data
]);
}
}
分页返回,使用Morphing 和 Morphed 事件
use Dingo\Api\Event\ResponseWasMorphed;
class AddCustomDataToResponse
{
public function handle(ResponseWasMorphed $event)
{
// 检查是否为分页响应或其他情况下需要添加额外数据
if (isset($event->content['meta']['pagination'])) {
// 直接在响应内容中添加 `code` 和 `message`
$event->content['code'] = 200; // 示例代码
$event->content['message'] = 'Success'; // 示例消息
// 确保修改后的内容被正确设置回响应
$event->response->setContent(json_encode($event->content));
}
}
}
在 EventServiceProvider
中注册这个监听器:
protected $listen = [
'Dingo\Api\Event\ResponseWasMorphed' => [
'App\Listeners\AddCustomDataToResponse',
],
];