Laravel 自定义rensponse返回值

写api接口的时候,要按照json数据格式返回,但是laravel自带的写起来很臃肿

public function index () {
  ……
return response()->json();
}

于是,我们可以自定一个返回接口。所以可以用到laravel中的响应宏(Response 宏)
1、创建响应provider

php artisan make:provider ResponseApiProvider

2、App\Providers下ResponseApiProvider

public function register()
    {
        //
        Response::macro('success', function($data=array(), $msg='success', $status=200){
            $content = [
                'code' => 0,
                'msg'  => $msg,
                'data'  => $data
            ];

            return response()->json($content, $status);
        });
      
      Response::macro('failed', function($data=array(), $msg='failed', $status=400){
            $content = [
                'code' => 1,
                'msg'  => $msg,
                'data'  => $data
            ];
            return response()->json($content, $status);
        });
    }

3、config/app.php注册
'providers' => [
……
App\Providers\ResponseApiProvider::class,
],
4、 App\Http\Controllers下Controller类修改

class Controller
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    protected function success($data=array(), $msg='success', $status=200){
        return response()->success($data, $msg, $status);
    }

    protected function failed($data=array(), $msg='failed', $status=400){
        return response()->failed($data, $msg, $status);
    }
}

5、控制器下测试返回

public function index(){
  $arr = [
      'name' => 'Lily',
      'age'    =>  18,
      'phone'=> '135XXXX4512',
  ];
  return $this->success($arr);
}
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。