vespakoen / epi
Requires
- php: >=5.3.0
- illuminate/support: ~4
Requires (Dev)
- illuminate/config: ~4
- illuminate/container: ~4
- illuminate/database: ~4
- illuminate/foundation: ~4
- mockery/mockery: dev-master@dev
- orchestra/testbench: 2.0.*
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-23 13:36:53 UTC
README
创建API可能是一项繁琐的任务,如果您需要以特定方式过滤数据,事情可能会变得复杂。Epi提供了一个控制器,用于处理Eloquent模型的CRUD基本任务,但Epi在index/“读取全部”方法中真正大放异彩。
想象一下,您有一个Page
模型,它与一个PageTranslation
模型相关联。您可能希望通过PageTranslation模型中的slug来检索页面。使用Epi,这就像请求以下URL一样简单:api/pages?filter[translation.slug]=some-slug
。
安装
要将Epi添加到您的Laravel应用程序中,请按照以下步骤操作
将以下内容添加到您的composer.json
文件中
"vespakoen/epi" : "dev-master"
然后,运行composer update
或如果您尚未安装包,请运行composer install
。
将以下行添加到app/config/app.php
配置文件中的providers
数组(在末尾)
'Vespakoen\Epi\EpiServiceProvider',
可选地,如果您不想在控制器中添加“use”语句,将以下行添加到app/config/app.php
配置文件中的aliases
数组(在末尾)
'EpiController' => 'Vespakoen\Epi\Controllers\EpiController',
配置
您需要运行以下命令以将配置发布到应用程序,否则在包更新时它将被覆盖。
php artisan config:publish vespakoen/epi
用法
要使用Epi构建API,我们需要创建一个从EpiController扩展的控制器,并将其与路由器注册。首先我们需要创建一个控制器,最好是将其与您的其他控制器分开,将API的控制器放在一个新的文件夹中。这个文件夹可以是app/controllers/api
(确保您将此路径添加到app/start/global.php
中的自动加载器中!)或/src/Somevendor/SomePackage/Controllers/Api
,具体取决于您的具体情况。
以下是一个示例
<?php class ApiUsersController extends Controller { /** * Create a new ApiUsersController instance. * * @param Illuminate\Database\Eloquent\Model $model * @return void */ public function __construct(User $model) { // Epi will look for $this->model, so make sure it is set like this. $this->model = $model; } /** * $eagerLoad Relations to eagerload by default * * @var array */ public $eagerLoad = array(); /** * $indexRules Validation rules used when getting a list of resources * * @var array */ public $indexRules = array(); /** * $storeRules Validation rules used when storing a resource * * @var array */ public $storeRules = array( 'email' => 'required|email' ); /** * $updateRules Validation rules used when updating a resource * * @var array */ public $updateRules = array( 'email' => 'required|email' ); }
现在我们需要将此控制器与路由器注册,这就像将以下行添加到您的app/routes.php
文件中一样简单。
Route::resource('api/users', 'ApiUsersController');
完成!
它是如何工作的?
在内部,Epi通过其魔力使所有好东西发生,我想您一定很好奇它是如何工作的,为了理解这一点,让我们首先看看Epi代码库中存在的对象。
操纵器
操纵器是一个修改将要执行的查询的对象。操纵器还将添加和使用别名以避免与自引用关系冲突。Epi内置以下操纵器。
过滤器
对查询和别名表调用->where()
连接
对查询和别名表调用->join()
限制器
对查询和别名表调用->take()
和可选的->skip()
排序器
对查询和别名表调用->orderBy()
提取器
提取器获取所有输入,并必须确保从它们中提取正确的操纵器。Epi内置以下提取器。
过滤器提取器
...
连接提取器
...
限制器提取器
...
排序器提取器
...
关系
Epi为每个Laravel关系都有自己的关系对象,这些对象有一个->getJoins()
方法,该方法将返回用于过滤或排序相关表的连接操纵器。
更多内容即将推出...