laravel 中 使用BaseController统一返回的数据格式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hjh15827475896/article/details/84801546

laravel 在Api接口开发中,可以使用 response()->json(["code"=>0,"msg"=>"ok","data"=>$data]);返回接口的 json数据但是太过烦索

我的解决方法如下,创一个 BaseController 继承 Controller然后,所有的 api中的控制器都继承 BaseController;在BaseController写上一些公用的方法

上代码

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;

class BaseController extends Controller{


    //成功返回
    public function success($data,$msg="ok"){
        $this->parseNull($data);
        $result = [
            "code"=>0,
            "msg"=>$msg,
            "data"=>$data,
        ];
        return response()->json($result,200);
    }


    //失败返回
    public function error($code="422",$data="",$msg="fail"){
        $result = [
            "code"=>$code,
            "msg"=>$msg,
            "data"=>$data
        ];
        return response()->json($result,200);
    }

    //如果返回的数据中有 null 则那其值修改为空 (安卓和IOS 对null型的数据不友好,会报错)
    private function parseNull(&$data){
        if(is_array($data)){
            foreach($data as &$v){
                $this->parseNull($v);
            }
        }else{
            if(is_null($data)){
                $data = "";
            }
        }
    }

}

当然,BaseController中还可以写很多公用的方法,自己根据实际情况添加 这里说一个代码注 parseNull()方法的做用,可以使返回的数据中的null修改值为空,不然安卓端处理起来很烦

猜你喜欢

转载自blog.csdn.net/hjh15827475896/article/details/84801546