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

laravel 在Api接口开发中,可以使用 response()->json(["code"=>200,"msg"=>"ok","data"=>$data]);返回接口的json数据但是太过烦索我的解决方法如下,创一个 ApiController 继承 Controller然后,所有的 api中的控制器都继承ApiController;在ApiController 写上一些公用的方法

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class ApiController extends Controller
{
    /**
     * 成功返回.
     *
     * @param array  $data
     * @param string $msg
     *
     * @return mixed
     */
    public function success($data, $msg = "OK")
    {
        $this->parseNull($data);
        $result = [
            "code" => 200,
            "msg" => $msg,
            "data" => $data,
        ];

        return response()->json($result, 200);
    }

    /**
     * 失败返回.
     *
     * @param string $code
     * @param array  $data
     * @param string $msg
     *
     * @return mixed
     */
    public function error($code = "422", $data = [], $msg = "fail")
    {
        $result = [
            "code" => $code,
            "msg" => $msg,
            "data" => $data,
        ];

        return response()->json($result, 200);
    }

    /**
     * @param $filePath
     */
    public function download($filePath)
    {
        header('Content-Encoding: UTF-8');
        header("Content-type:application/octet-stream");
        header("Content-Disposition:attachment;filename=".basename($filePath));
        header("Accept-ranges:bytes");
        readfile($filePath);//读取文件
        unlink($filePath);
        exit;
    }

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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值