maymeow / cakephp-api-resource
CakePHP 的 API 资源
v1.0
2018-05-06 11:04 UTC
Requires
- cakephp/cakephp: ^3.6
Requires (Dev)
- phpunit/phpunit: ^7.1
This package is auto-updated.
Last update: 2024-09-17 00:20:42 UTC
README
JSON API 资源插件用于 CakePHP。此插件受 Laravel 的 JSON API 资源启发。
要求
- CakePHP 3.6
- PHP 7.1 或更高版本
安装
Cakephp Api Resource 插件可以通过 Composer 安装
composer require maymeow/cakephp-api-resource
使用方法
创建资源
在这个例子中,我将展示如何创建 UserResource。在你的应用程序中创建新的文件 src/Http/Resources/UserResource.php
。
UserResource.php 将看起来像这样
<?php namespace App\Http\Resources; use MayMeow\API\Resource; class UserResource extends Resource { public function toArray() { return [ 'id' => $this->id, 'email' => $this->email, 'created_at' => $this->created ]; } }
接下来,你可以在你的 API 控制器中使用你刚刚创建的资源。以下是一个示例
<?php // ... use App\Http\Resources\UserResource; // ... class definition above public function index() { $query = $this->Users->find(); $users = UserResource::collection($query); $this->set([ 'users' => $users, '_serialize' => ['users'] ]); }
单个资源与资源集合
如果你得到一个实体实例,例如 $this->Users->get($id)
,使用
// BelongsTo, HasOne $user = (new UserResource($userQuery))->get();
如果你得到多个实例,例如索引 $allUsers = $this->Users->find()
,使用
// HasMany, HasAndBelongsToMany $users = UserResource::collection($query);
匿名函数
如果需要在发送到客户端资源之前更新属性,资源支持匿名函数。以下示例展示了如何发送从 markdown 生成的 HTML
在你的资源文件中
public function toArray() { return [ 'id' => $this->id, 'raw_body' => $this->text, 'html_body' => function ($q) { return (new Parsedown())->$text($q->text); // text is parsed before data is send to client } ]; }
关联(beta)
资源可以相互包含。
public function toArray() { return [ 'id' => $this->id, 'name' => $this->name, 'profile' => function ($q) { return (new ProfileResource($q->profile))->get(); // single entity (belongsTo, HasOne) }, 'posts' => function ($q) { return PostResource::collection($q->posts); // collection of resources (hasMany) } ]; }
已知问题:在 beta 版本中 不要 包含相同的关联,因为会导致无限循环。
贡献
- 分支它!
- 创建你的功能分支:
git checkout -b my-new-feature
- 提交你的更改:
git commit -am '添加一些功能'
- 推送到分支:
git push origin my-new-feature
- 提交拉取请求 :D
历史
查看更改日志
致谢
- MayMeow
许可证
MIT