z1lab / laravel-json-api

将 Laravel 应用规范化以返回 Json Api 结果的最小库。

v0.2.0-rc1 2019-04-09 13:44 UTC

This package is auto-updated.

Last update: 2024-09-10 02:07:39 UTC


README

composer require z1lab/laravel-json-api

定义 .env 键

CACHE_LIFETIME 用于设置默认缓存有效期。

PAGINATION_SIZE 用于定义集合结果的页面大小(例如:GET index 方法)。

注意:此包使用 Cache::tags() 操作缓存,因此将 CACHE_DRIVER 修改为 redismemcache 并安装所需的依赖。默认情况下,composer.json 中包含了 predis/predis

简介

Laravel Json Api 是一个将 Laravel 应用规范化以返回 Json Api 结果的最小库。

在开始之前,请查看 Json API 规范

此包利用 Laravel Eloquent Api Resources 和一些简单的依赖来改进 Json API 模式。

API 版本控制

API 异常处理器

CORS 中间件

HTTP 缓存

启动后,请查看每个包的官方文档以了解其默认配置。

用法

只需扩展所需的类并应用错误处理。

错误处理

在 App\Exceptions\Handler 中更改 render() 方法

use Z1lab\JsonApi\Exceptions\ApiHandler;

public function render($request, Exception $exception)
    {
        if($request->wantsJson()) {
            $handler = new ApiHandler($this->container);

            return $handler->render($request, $exception);
        }

        return parent::render($request, $exception);
    }

API 控制器

在您的控制器类中,只需扩展 ApiController 并根据以下示例设置构造函数

use Z1lab\JsonApi\Http\Controllers\ApiController;

class AwesomeController extends ApiController
{
    public function __construct(AwesomeRepository $repository)
    {
        parent::__construct($repository, 'Awesome');
    }
}

第一个参数设置用于访问数据集的存储库;第二个参数定义了 JsonResource 类的命名空间。

ApiController 扩展了 Laravel BaseController 的所有基本方法,并为您的 ApiResourceController 提供了初始方法。

public function index() {}

public function show(string $id) {}

public function destroy(string $id) {}

public function makeResource($obj) {}

public function collectResource($collection) {}

您只需要实现使用您的 FormRequest 规则的 store()update() 方法。

API 表单请求

为了在您的 FormRequests 中优化错误处理,只需扩展 ApiFormRequest 类。

use Z1lab\JsonApi\Http\Requests\ApiFormRequest;

class AwesomeFormRequest extends ApiFormRequest {}

API 存储库

在您的存储库类中,只需扩展 ApiRepository 并根据以下示例设置构造函数

use Z1lab\JsonApi\Repositories\ApiRepository;

class AwesomeRepository extends ApiRepository
{
    public function __construct(Awesome $model)
    {
        parent::__construct($model, 'awesome');
    }
}

第一个参数设置用于访问数据的模型;第二个参数定义了缓存前缀名称。

ApiRepository 为您处理应用程序中的数据提供了一些常用方法。

public function create(array $data) {}

public function update(array $data, string $id) {}

public function destroy(string $id) {}

public function find(string $id, array $with = []) {}

public function list(int $items = 0) {}

public function findWhere(string $column, $value, array $with = []) {}

public function all(array $keys = []) {}

许可协议

Laravel Json Api 是开源软件,受 MIT 许可协议 许可。