这个没强制要求,子类继承父类或者用Trait
,用法都是$this->
。一个是继承子父类,一个是用use
没啥差别,怎么方便怎么来。使用中间件的应该是做了参数校验吧,其实本质上还是调用\Illuminate\Http\JsonResponse
。我一般用继承,因为接口控制器(类)基本都是继承App\Controllers\Controller.php
,所以干脆直接在里面写就好了。
可以参考一下我写的:
use Illuminate\Http\Response;
/**
* 返回成功信息
* @param array $data
* @param string $message
* @param int $code
* @param bool $status
* @return \Illuminate\Http\JsonResponse
*/
public function success(array $data = [], string $message = "请求成功", int $code = Response::HTTP_OK, bool $status = true): \Illuminate\Http\JsonResponse
{
return response()->json(['status' => $status, 'code' => $code, 'message' => $message, 'data' => $data]);
}
/**
* 返回失败信息
* @param $code
* @param $message
* @param bool $status
* @return \Illuminate\Http\JsonResponse
*/
public function failed($code, $message, bool $status = false): \Illuminate\Http\JsonResponse
{
return response()->json(['status' => $status, 'code' => $code, 'message' => $message]);
}
RESTFul 里没有所谓的 code data msg ,出参就是对象,不是对象肯定异常了,这时候状态码不是200,message就会被返回,laravel默认就是这样,没必要画蛇添足,对于前端开发或者APP开发,很多开发者被误导,对返回值先判断2XX,再解析code,再解析一遍data,做了无用功,现在前端框架包括APP框架的httpclient 大部分都在请求拦截器和响应拦截器,对非2xx响应都能很好的通过拦截器处理,很多开发者,非得自己去解析data。不知道他们怎么想的。
向java里的 okhttp,出参可以直接就赋值到目标dao,完全没有必要包一层 code msg data,对于非2xx响应,比如表单错误,直接在拦截器里接 422 就行了,解析出来就是异常信息,如果你觉得非得加,不加不舒服,那么我要说,不要在2xx响应里加,一点意义没有,你在非2xx响应里加个 sub_code 我勉强还可以认为你是为了让前端去识别具体的业务异常,事实上你可以看看最新的微信支付V3接口,看看标准的RESTFul是如何响应的。
这个没强制要求,子类继承父类或者用
Trait
,用法都是$this->
。一个是继承子父类,一个是用use
没啥差别,怎么方便怎么来。使用中间件的应该是做了参数校验吧,其实本质上还是调用\Illuminate\Http\JsonResponse
。我一般用继承,因为接口控制器(类)基本都是继承App\Controllers\Controller.php
,所以干脆直接在里面写就好了。 可以参考一下我写的: