1. 程式人生 > >laravel 中 使用BaseController統一返回的資料格式

laravel 中 使用BaseController統一返回的資料格式

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修改值為空,不然安卓端處理起來很煩