spatie/laravel-resource-endpoints

该包已被放弃,不再维护。作者建议使用 spatie/laravel-resource-links 包。

为 Laravel API 资源添加链接

1.1.2 2021-01-13 11:27 UTC

This package is auto-updated.

Last update: 2021-04-14 14:32:41 UTC


README

该包已被放弃: Laravel resource links two years later

为 Laravel API 资源添加链接

Latest Version on Packagist GitHub Workflow Status Check & fix styling Total Downloads

假设您有一个具有 indexshowcreateeditstoreupdatedelete 方法的 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"
      }
   }
}

支持我们

68747470733a2f2f6769746875622d6164732e73332e65752d63656e7472616c2d312e616d617a6f6e6177732e636f6d2f6c61726176656c2d7265736f757263652d6c696e6b732e6a70673f743d31

我们在创建 一流的开源包 上投入了大量资源。您可以通过 购买我们的付费产品之一 来支持我们。

我们非常感谢您从家乡寄来明信片,说明您正在使用我们的哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将在 我们的虚拟明信片墙 上发布所有收到的明信片。

为什么要在资源中包含链接?

假设您正在构建单页应用或使用 Inertia 构建的应用。在这种情况下,您有一个在后端运行的 PHP 应用程序和一个在前端运行的 JavaScript 应用程序。这些应用程序通过 API 进行通信,但如果前端想要将用户路由到另一个页面怎么办?

由于路由是在后端定义的,前端并不知道要将用户路由到何处。我们可以在 JavaScript 代码中直接编写 URL,但如果路由发生变化怎么办?因此,为什么不将从后端传递这些路由到前端呢?您可以手动编写所有这些路由,或者让此包为您完成这项工作。

设置资源链接

我们为此包有一个专门的 文档 网站。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件freek@spatie.be而不是使用问题跟踪器进行报告。

致谢

许可协议

MIT许可协议(MIT)。请参阅许可文件以获取更多信息。