z1lab / laravel-json-api
将 Laravel 应用规范化以返回 Json Api 结果的最小库。
Requires
- php: >=7.1.3
- barryvdh/laravel-cors: ^0.11.2
- barryvdh/laravel-httpcache: ^0.3.4
- illuminate/contracts: 5.8.*
- illuminate/http: 5.8.*
- illuminate/routing: 5.8.*
- illuminate/support: 5.8.*
- illuminate/validation: 5.8.*
- juampi92/api-resources: 1.2.*
- optimus/heimdal: ~1.0
- predis/predis: ^1.1
Requires (Dev)
- phpunit/phpunit: ^7.0
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
修改为 redis
或 memcache
并安装所需的依赖。默认情况下,composer.json 中包含了 predis/predis
。
简介
Laravel Json Api 是一个将 Laravel 应用规范化以返回 Json Api 结果的最小库。
在开始之前,请查看 Json API 规范。
此包利用 Laravel Eloquent Api Resources 和一些简单的依赖来改进 Json API 模式。
启动后,请查看每个包的官方文档以了解其默认配置。
用法
只需扩展所需的类并应用错误处理。
错误处理
在 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 许可协议 许可。