sevming/laravel-api-resource

1.0.0 2021-09-14 07:12 UTC

This package is auto-updated.

Last update: 2024-09-14 14:24:34 UTC


README

要求

  1. PHP >= 7.4
  2. Composer

安装

$ composer require sevming/laravel-api-resource -vvv

使用方法

说明事项

  • 建议与 sevming/laravel-response 配合使用
  • 支持资源、集合、分页、自定义分页的数据处理
  • show() 的优先级大于 hide()
  • 列表数据处理(MockUserResource 资源类)
    • MockUserResource::collection($list)
    • MockUserCollection::make($list)

资源

  • MockUserResource
    <?php
    
    namespace App\Http\Resources\Mock;
    
    use Sevming\LaravelApiResource\BaseResource;
    
    class MockUserResource extends BaseResource
    {
        public const SCENE_LIST = 'list';
    
        public const SCENE_INFO = 'info';
    
        public function toArray($request)
        {
            switch ($this->scene) {
                case self::SCENE_LIST:
                    $this->show(['id', 'account']);
                    break;
                case self::SCENE_INFO:
                    $this->hide(['password']);
                    break;
                default:
                    break;
            }
    
            return $this->filterFields([
                'id' => $this->id,
                'account' => $this->account,
                'password' => $this->password,
                'created_at' => $this->created_at,
                'updated_at' => $this->updated_at,
            ]);
        }
    
        public function with($request)
        {
            return [
                'with' => 'with resource',
            ];
        }
    }
  • 调用示例
    $user = MockUser::find(1);
    
    return MockUserResource::make($user);
    return MockUserResource::make($user)->show(['id']);
    return MockUserResource::make($user)->hide(['id']);
    return MockUserResource::make($user)->scene(MockUserResource::SCENE_LIST);
    return MockUserResource::make($user)
        ->scene(MockUserResource::SCENE_LIST)
        ->show(['created_at'])
        ->additional([
            'additional' => 'additional resource'
        ]);

集合

  • 调用示例
    $list = MockUser::get();
    
    return MockUserResource::collection($list);
    return MockUserResource::collection($list)->show(['id']);
    return MockUserResource::collection($list)->hide(['id']);
    return MockUserResource::collection($list)->scene(MockUserResource::SCENE_LIST);
    return MockUserResource::collection($list)
        ->scene(MockUserResource::SCENE_LIST)
        ->show(['created_at'])
        ->additional([
            'additional' => 'additional collection'
        ]);

贡献

你可以通过以下三种方式之一进行贡献

  1. 使用 问题跟踪器 提交错误报告。
  2. 问题跟踪器 上回答问题或修复错误。
  3. 贡献新功能或更新 wiki。

代码贡献过程并不非常正式。你只需确保遵循 PSR-0、PSR-1 和 PSR-2 编码规范。任何新的代码贡献都必须附有适用的单元测试。

许可证

MIT