foothing / laravel-repository-controller
使用 Eloquent Laravel 仓库实现的资源控制器。
Requires
- php: >=5.5.0
- foothing/laravel-repository: >=0.8.0
- illuminate/routing: ~5.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- mockery/mockery: 0.9.*
- orchestra/testbench: ~3.0
- phpunit/phpunit: 4.8.*
This package is auto-updated.
Last update: 2024-08-29 03:26:18 UTC
README
轻松在 Laravel 数据库上打开 HTTP API。
设置
使用 composer 安装
composer require foothing/laravel-repository-controller
此包将在 REST-like 格式中定义几个路由,以便在数据库上执行操作。
在 config/app.php 中添加服务提供者
"providers" => [ Foothing\RepositoryController\RepositoryControllerServiceProvider::class, ],
为了启用路由,您需要在 routes.php 中声明它们
// ... your app routes RouteInstaller::install('api/v1/');
请注意,为了防止冲突,您需要在
routes.php文件的最后放置RouteInstaller::install()方法。
重要:您需要将
RouteServiceProvider中的默认控制器命名空间更改为如下所示:protected $namespace = '';
最后,在配置文件中配置您的资源。
php artisan vendor:publish --provider="Foothing\RepositoryController\RepositoryControllerServiceProvider" --tag="config"
这将在您的 config 文件夹中添加 resources.php 文件。
'resources' => array( // Resources must be in the form 'resourceName' => 'resourceImplementation' // The implementation should be a fully qualified namespace to the model. 'user' => 'App\User', 'foo' => 'My\Namespace\Foo', ),
这将在指定的资源上启用路由。
如何使用
RouteInstaller 将声明包路由。您可以将前缀作为可选的 install() 参数指定。此过程将启用以下路由,我们将在后面更详细地描述。
每个 API 端点将以 JSON 格式返回数据。
读取资源
示例
GET api/v1/resources/user:将返回所有用户GET api/v1/resources/user/15:将返回 id 为 15 的用户GET api/v1/resources/user/15/roles将返回用户 15 的角色
分页
此端点将处理用于分页的 2 个查询字符串参数
- page(分页页码)
- ipp(每页分页项数)
结果将是 Laravel 分页结果,如下所示
{
"total":4,
"per_page":"25",
"current_page":1,
"last_page":1,
"next_page_url":null,
"prev_page_url":null,
"from":1,
"to":4,
"data":[ the resources array ]
}
相关资源
您可以通过传递可选的 with 查询字符串参数来获取请求资源内的关系
GET api/v1/resources/user/1?with=roles,posts
自动懒加载关系
由于此包依赖于 Laravel Repository,因此您可以利用该包的 懒加载 功能,从而在每个资源上启用自动懒加载功能。
创建资源
创建请求的资源。
示例
POST api/v1/resources/user
POST 负载数据
{
name: 'foo',
email: 'foo@bar.baz'
}
HTTP 响应
{
id: 1,
name: 'foo',
email: 'foo@bar.baz'
}
更新资源
更新请求的资源。
示例
PUT api/v1/resources/user/1
PUT 负载数据
{
id: 1,
name: 'updating name',
email: 'foo@bar.baz'
}
HTTP 响应
{
id: 1,
name: 'updating name',
email: 'foo@bar.baz'
}
删除资源
删除请求的资源。
示例
DELETE api/v1/resources/user/1
链接、批量创建和批量更新
更多信息即将推出。
许可证
MIT