dingo 初识 Transformer

  • James
  • 11个月前
  • 109 次阅读
  • 更新于 4小时前
dingo  

一个可用的 API 简单来说就是通过接受请求并将易处理的响应返回给客户端,一般来说, API 有多种易处理的方式返回响应,例如 JSON ,而具体应该使用哪种方式返回响应取决于你的 API 的复杂程度。

 

文档 上写的很模糊一笔带过,在接口请求完返回时使用 Transformer 返回状态, 看文档有点蒙逼,接下来我们写个小demo:

注意:使用之前需要创建一个 BaseController 然后应用 Helpers,才可以使用。

 

1、首先我们创建一个 PostTransformers,命名空间在 app 目录下随便,这里我放在 Http 目录下:

namespace App\Http\Transformers;

use App\Model\Post;
use League\Fractal\TransformerAbstract;

class PostTransformers extends TransformerAbstract
{

   // 关联表
    protected $availableIncludes = ['user'];

    // 默认
    protected $defaultIncludes = [];

    // post 表中需要返回的字段

    public function transform(Post $post)
    {
        return [
            'name' => $post['name'],
            'age' => $post['age'],
            'sex' => $post['sex'],
            'created_at' => $post['created_at'],
            'updated_at' => $post['updated_at'],
            'image' => $post['image'],
        ];
    }

    // 返回关联 user 表中的字段

    public function includeUser(Post $post)
    {
        return $this->item($post->user, new UserTransformer());
    }
}

 

2、使用

        // 数组
        $data = Post::where('id', 1)->first();
        return $this->response->array($data->toArray());

        // 分页
        $data = Post::paginate(4);
        return $this->response->array($data->toArray());
        return $this->response->paginator($data, new PostTransformers());

        // 集合
        $data = Post::all();
        return $this->response->collection($data, new PostTransformers());

        // 单条数据
        $data = Post::find($id);
        return $this->response->item($data, new PostTransformers());

 

3、结合 给 dingo 统一返回状态码 效果:

code 200
success true
data  
id 1
name "test"
age 2
sex 1
created_at "2019-04-01 02:57:19"
updated_at "2019-04-01 02:57:19"
image "20190410_5cad528e5656e.jpg"

   本站文章除注明转载/出处外,均为本站原创或翻译。若要转载但请务必注明出处,尊重他人劳动成果。    本文链接: http://james.dmzfa.com/articles/dingo-chu-shi-transformer

上一篇:给 dingo 统一返回状态码

下一篇:安装 dingo 扩展包有冲突解决方法

文章评论 (0)发表评论

Top