osedea/laravel-rest

该包最新版本(v0.2.1)没有可用的许可证信息。

一个提供基于 Laravel 框架版本 5 的 RESTful API 的包,使用命令总线。

v0.2.1 2015-06-12 15:23 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:32:03 UTC


README

此包已不再维护。如果您有任何问题,您可以自由地 fork 仓库。

LaravelRest

这是一个 Laravel 5 包,它为您的模型创建 RESTful API 路由,并使用命令总线来执行 CRUD 请求。

安装

使用 composer 安装此包

composer require osedea/laravel-rest:~0.2.1

用法

首先,将 eloquence 服务提供者添加到您的 config/app.php 文件中

'Osedea\LaravelRest\LaravelRestServiceProvider'

所有模型都需要使用 trait \Osedea\LaravelRest\Traits\CommandModel 来提供一些属性和方法

<?php

namespace Acme;

class SomeModel {
    use \Osedea\LaravelRest\Traits\CommandModel;
}

然后,将配置文件发布到您的应用程序

`php artisan vendor:publish --provider="Osedea\LaravelRest\LaravelRestServiceProvider"`

现在您应该可以开始了,无需进行任何更改!访问 /api/v1/users 查看用户列表!

配置选项

应用程序命名空间

您需要指定项目中使用的应用程序命名空间。默认为 App,但如果您已更改它,您需要在配置中更改它

<?php

return [
    'app_namespace' => 'SomethingElse'
];

模型命名空间

如果您的模型在不同于 app_namespace 的自定义命名空间中,您可以指定此配置

<?php

return [
    'models_namespace' => 'SomethingElse'
];

映射

要将资源添加到默认控制器,只需在 /config/api.php 文件中添加一行即可

<?php

return [
    'mapping' => [
        'users' => 'User',
    ]
];

API 前缀

如果您想使用不同的前缀,可以通过指定前缀键来完成

<?php

return [
    'prefix' => 'api/v2'
];

如果您没有指定键前缀,它将默认为 api

命令和默认控制器

LaravelRest 附带一个默认的 REST 控制器来处理资源。这允许自动处理资源列表、显示、删除和列出关系。

操作

选项

分页

默认情况下,所有列表都是分页的。您可以通过覆盖变量为每个模型设置每页的项目数

protected $perPage = 10;

您还可以定义此值的最大值,因为它可以在请求中覆盖

protected $perPageMax = 50;

然后在请求中: /users?page=2&perPage=3

排序

可以通过用逗号分隔来对多个列进行排序

/users?sort=name,email

您可以通过在列名前放置一个 - 来选择顺序(desc 或 asc)

/users?sort=-id

字段

如果您在查询列表或资源时不需要所有字段,您可以指定您需要的字段

/users?fields=id,name

嵌套

仅在您真的需要时使用。

如果您绝对需要嵌套关系,可以这样指定

/users?embed=groups

命令

默认值

LaravelRest 为几个动作提供了默认命令

  • GET /{resource}: Osedea\LaravelRest\Commands\DefaultCommand\IndexCommand
  • GET /{resource}/{id}: Osedea\LaravelRest\Commands\DefaultCommand\ShowCommand
  • DELETE /{resource}/{id}: Osedea\LaravelRest\Commands\DefaultCommand\DeleteCommand
  • GET /{resource}/{id}/{relation}: Osedea\LaravelRest\Commands\DefaultCommand\RelationIndexCommand

使用这些默认值,映射就足够它们工作了。您可以通过创建使用正确命名空间的自定义命令来覆盖它们。

例如,要覆盖 POST /users/{id} 默认命令,创建一个名为 Osedea\LaravelRest\Commands\UserCommand\DestroyCommand 的命令。

创建和更新

这些操作非常特定于某个资源,因此没有默认值。

您必须为映射文件中列出的所有资源创建它们。其模式如下

Osedea\LaravelRest\Commands\{mapping[资源]}Command\{操作}Command

例如,要添加 users 资源创建命令,命令是

Osedea\LaravelRest\Commands\UserCommand\StoreCommand

一个命令类

命令类需要继承 Osedea\LaravelRest\Commands\Command 并实现 Illuminate\Contracts\Bus\SelfHandling