i74ifa / gpapi
包用于解决api中未使用数据增加的问题。
0.2
2024-03-20 09:09 UTC
Requires (Dev)
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.5
README
解决方案
- 响应特定关系
- 响应特定响应参数
- 从关系中获取响应参数
如何工作
工作始于名为 Gpapi 的特质类
然后我们将其添加到支持资源类中
让我们启动一个项目来展示方法
关系参数表单
我们将坚持这个公式
gpapi.test/bestApi/api/post/1?relations=tags
relations=tags
我们想要一个名为 tags 的关系
为给定关系定义参数
gpapi.test/bestApi/api/post/1?relations=tags[id, name]
模型
- App\Models\Post
- App\Models\Tag
资源
<?php namespace App\Http\Resources; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; class PostResource extends JsonResource { public function toArray($request) { return parent::toArray($request); } }
<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; class TagResource extends JsonResource { public function toArray($request) { return parent::toArray($request); } }
这是默认资源
让我们支持 PostResource
use I74ifa\Gpapi\Gpapi use I74ifa\Gpapi\Interfaces\interfaceGpapi; class QuestionResource extends JsonResource implements interfaceGpapi { use Gpapi; public function toArray($request) { return $this->resolveRelations($request); } public function resolveRelations($request) { $data = [ 'id' => $this->getKey(), 'table' => $this->getTable(), 'data' => $this->getParams($request->get('params')), ]; // If a route contains relations if ($request->has('relations')) { $data['relationships'] = $this->withRelations($request->get('relations')); } }