spatie / laravel-resource-endpoints
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:32:41 UTC
README
该包已被放弃: Laravel resource links two years later
为 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)。请参阅许可文件以获取更多信息。