spatie / laravel-resource-links
为 Laravel API 资源添加链接
Requires
- php: ^7.2|^8.0
- illuminate/database: ~5.8.0|^6.0|^7.0|^8.0
- illuminate/routing: ~5.8.0|^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ~3.8.0|^4.0|^5.0|^6.0
- phpunit/phpunit: ^8.0|^9.0
This package is auto-updated.
Last update: 2021-04-14 14:34:28 UTC
README
此包已被弃用: Laravel 资源链接两年后
为 Laravel API 资源添加链接
假设你有一个包含 index
、show
、create
、edit
、store
、update
和 delete
方法的 UsersController
以及一个 UserResource
。如果你可以在不从头开始构建的情况下立即在 UserResource
中获得这些方法的 URL,岂不是很好?
此包将根据你定义的控制器或操作将链接添加到你的资源中。让我们看一个资源示例。
class UserResource extends JsonResource { use Spatie\ResourceLinks\HasLinks; use Spatie\ResourceLinks\HasMeta; public function toArray($request): array { return [ 'id' => $this->id, 'name' => $this->name, 'links' => $this->links(UsersController::class), ]; } public static function meta() { return [ 'links' => self::collectionLinks(UsersController::class), ]; } }
现在在创建 UserResource
集合时,你将拥有来自 UserController
的所有链接
{ "data":[ { "id":1, "name": "Ruben Van Assche", "links": { "show": "https://laravel.app/users/1", "edit": "https://laravel.app/users/1/edit", "update": "https://laravel.app/users/1", "delete": "https://laravel.app/users/1" } } ], "meta": { "links": { "index": "https://laravel.app/users", "create": "https://laravel.app/users/create", "store": "https://laravel.app/users" } } }
支持我们
我们在创建 一流的开源包 上投入了大量资源。您可以通过 购买我们的付费产品之一 来支持我们。
我们非常感谢您从家乡寄来明信片,说明您正在使用我们的哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将在 我们的虚拟明信片墙 上发布所有收到的明信片。
为什么在资源中包含链接?
假设您正在构建单页应用程序或使用 Inertia 构建的应用程序,那么您有一个运行在后端的 PHP 应用程序和一个运行在前端的前端 JavaScript 应用程序。这些应用程序通过 api 进行通信,但前端如果想要将用户路由到另一个页面怎么办?
由于路由是在后端定义的,前端不知道应该将用户路由到哪里。我们可以在 JavaScript 代码中直接写入 URL,但如果路由发生更改怎么办?所以为什么不把这些路由从后端传递到前端呢?您可以直接手动写下所有这些路由,或者让这个包为您完成这项工作。
设置资源链接
我们为此包有一个专门的 文档 网站。
测试
composer test
更新日志
请参阅 更新日志 了解最近发生了什么变化。
贡献
请参阅CONTRIBUTING获取详细信息。
安全
如果您发现任何与安全相关的问题,请发送电子邮件至freek@spatie.be,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。