api response 统一格式响应
你们在开发过程中是使用类似于这种解决方案也就是http200然后code为0,还是直接用Http状态码来区分的
大家讨论一下
不过感觉laravel内置的异常还有验证都不是用code还区分的
<?php
namespace App\Traits;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\JsonResource;
trait ApiResponse
{
/**
* @param array $data
* @param int $status
* @return JsonResponse
*/
public function response(array $data, int $status = 200)
{
return response()->json($data, $status, [], JSON_UNESCAPED_UNICODE);
}
/**
* @param $data
* @param int $code
* @param string $message
* @param int $status
* @return JsonResponse
*/
public function data($data, int $code = 1, string $message = 'success', int $status = 200)
{
return $this->response(compact('code', 'message', 'data'), $status);
}
/**
* @param JsonResource $resource
* @param int $code
* @param string $message
* @param int $status
* @return JsonResponse
*/
public function paginator(JsonResource $resource, int $code = 1, string $message = 'success', int $status = 200)
{
$resource = $resource->resource->toArray();
$data = $resource['data'];
$pagination = [
'total' => $resource['total'],
];
return $this->response(compact('code', 'message', 'data', 'pagination'), $status);
}
/**
* @param string $message
* @param int $code
* @param $data
* @param int $status
* @return JsonResponse
*/
public function success(string $message = 'success', $data = [], int $code = 1, int $status = 200)
{
return $this->response(compact('code', 'message', 'data'), $status);
}
/**
* @param string $message
* @param int $code
* @param $data
* @param int $status
* @return JsonResponse
*/
public function error(string $message = 'error', int $code = 0, $data = [], int $status = 200)
{
return $this->response(compact('code', 'message', 'data'), $status);
}
}
推荐文章: