foothing/laravel-repository-controller

使用 Eloquent Laravel 仓库实现的资源控制器。

0.2.0 2016-07-28 17:46 UTC

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