mohamed-ibrahem / advanced-json-resource
此包的最新版本(v0.9.0)没有可用的许可信息。
高级JSON Laravel资源
v0.9.0
2023-03-08 11:45 UTC
Requires
- php: ^7.3|^8.0
- ext-json: *
- illuminate/support: ^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.3
README
通过为每种响应类型创建方法来为您的Laravel应用程序创建高级JSON响应,例如 toIndex
、toShow
、toForm
或自定义方法名称!还有 shared
方法用于所有共享属性。
安装
您可以通过composer安装此包
composer require mohamed-ibrahem/advanced-json-resource
用法
每个资源都应该扩展 AdvancedJsonResponse\ApiResource
类。
现在,根据您的响应类型,您可以创建方法。然后在控制器中调用这些方法,使用snake case,开头不包含 to
。
示例
use AdvancedJsonResource\ApiResource; use App\Models\User; use Illuminate\Http\Request; /** * @mixin User */ class UserResource extends ApiResource { /** * {@inheritdoc} * * @param Request $request * @return array<string, mixed> */ public function toIndex(Request $request): array { return [ 'name' => $this->name, ]; } /** * {@inheritdoc} * * @param Request $request * @return array<string, mixed> */ public function toShow(Request $request): array { return [ 'email' => $this->email, ]; } /** * {@inheritdoc} * * @param Request $request * @return array<string, mixed> */ public function toForm(Request $request): array { return [ 'can_update' => true, ]; } /** * This is a custom response method. * * @param Request $request * @return array<string, mixed> */ public function toCustom(Request $request): array { return [ 'custom' => 'custom', ]; } /** * {@inheritdoc} * * @param Request $request * @return array<string, mixed> */ public function shared(Request $request): array { return [ 'id' => $this->id, ]; } }
在控制器中
use App\Models\User; use App\Http\Resources\UserResource; use Illuminate\Http\Request; class UserController { public function index(): UserResource { return UserResource::index( User::all(), ); } public function store(Request $request): UserResource { //... return UserResource::form($user); } public function show(User $user): UserResource { return UserResource::show($user); } public function custom(Request $request, User $user): UserResource { return UserResource::cutsom($user); } }
测试
composer test