laravel 中 使用BaseController統一返回的資料格式
阿新 • • 發佈:2018-12-26
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修改值為空,不然安卓端處理起來很煩