版权声明:本文为博主原创文章,未经博主允许不得转载。 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修改值为空,不然安卓端处理起来很烦