ThinkPHP接口返回数据格式

2019年8月15日 0 条评论 46 次阅读 2 人点赞

这几天在研究tp5.1的使用方法,发现tp和laravel比确实不够优雅,但是大多数方法的使用还是一样的,我最近在用jwt来写一下接口的验证,但是用模型查出来的数据直接进行返回有点杂乱无章,于是我自己研究了一下,发现tp的控制器都是继承于controller的,我仿造了laravel的写法,在tp的父类控制器里写了个这个方法,代码如下:

public function success($data = null)
    {
        return ['error_code' => 0, 'data' => $data];
    }

发现并不行,请求的时候不但没有达到我想要的格式,还给我报了错,我心想,肯定是tp不支持这种写法,发现tp封装有自带的success方法,是用来跳转或者重定向的,我转换了一下思路,想想还是自己封装一个吧,刚开始直接封装了一个方法,把返回的数据直接放到数组格式中,还是报错,错误的代码如下:

public function msg($data = null)
    {
        return ['error_code' => 200, 'data' => $data];
    }

然后我仔细研究了一下tp的底层,是必须需要把数据转换为json,才能达到我想要的格式,于是又做了一些修改,最终代码如下:

public function msg($code,$data){
        //判断状态码
        switch ($code) {
            case 200:
                $msgStr = 'success';
                break;
            case 500:
                $msgStr = 'error';
                break;
        }

        //将返回的数据放到数组中去
        $data = ['code'=> $msgStr,'data'=> $data];

        //转换为json
        return json($data);
    }

这样,我们在每次return的时候,只需要将数据和状态码传到我们方法中去,就可以获取到我们返回的正确格式了,便于前端去判断该数据是否正确。用法代码如下:

class Order extends Controller
{
    /**
     * @return Json
     */
    public function index()
    {
        //定义一个数组
        $arr = [
            'name' => 'liang',
            'sex' =>1
        ];

        //将数组和状态码返回到msg方法中
        return $this->msg(200, $arr);
    }

注意,我们把方法写到父类controller控制器里面,这样我们每次只需要要继承于父类控制器,就可以获取到当前的公共方法,今天就简单的说一下这个格式,近期由于在找工作,没时间更新文章,工作已在本周三定下来了,后面会补上walle自动化部署的文章和数据库误删还原数据的文章,若是有空会写一篇tp如何使用jwt来做接口的验证文章,欢迎大家关注,我还是原来的犯二青年,一个编程的爱好者,路程很艰辛,希望大家一路坚持下去!!!

梁桂锋

来自西京学院大三的小开发者。

文章评论(0)