自己写了一个简单的后置中间件统一格式
使用后置中间件来返回接口
自己写了个统一接口返回
<?php
namespace App\Http\Middleware;
use Closure;
/**
* 设置一个后置中间件统一返回格式,去除null值
*
* Class Response
*/
class Response
{
private $codeDefault = self::SUCCESS;
private $messageDefault = self::SUCCESS_MSG;
const SUCCESS = 200;
const WARNING = 300;
const ERROR = 400;
const SUCCESS_MSG = '返回成功';
public function handle($request, Closure $next)
{
$response = $next($request);
$response = $this->formatData($response->original);
return response()->json($response);
}
/**
* 格式化数据
*
* @param $response
* @return array
*/
private function formatData($response)
{
if (isset($response['data'])) {
$response['data'] = $this->isArray($response['data']);
$response['data'] = $this->nullTransform($response['data']);
}
$message = isset($response['message']) ? $response['message'] : '';
$code = isset($response['code']) ? $response['code'] : $this->codeDefault;
$data = isset($response['data']) ? $response['data'] : $this->messageDefault;
return ['code' => $code, 'message' => $message, 'data' => $data];
}
/**
* 去除null值
*
* @param $response
* @return mixed
*/
private function nullTransform($response)
{
$response = $this->isArray($response);
array_walk_recursive($response, function (&$val) {
if ($val === null) {
$val = '';
}
});
return $response;
}
/**
* 判断变量是否数组
*
* @param $response
* @return mixed
*/
private function isArray($response)
{
if(!is_array($response)){
return $response->toArray();
}
return $response;
}
}
控制器只需要直接返回数组,路由引入该中间件。
本作品采用《CC 协议》,转载必须注明作者和本文链接