malhal / laravel-restapi
一个控制器和处理程序,让您轻松构建REST API
v1.0.0
2016-09-19 15:32 UTC
Requires
- php: >=5.6.4
- laravel/framework: 5.3.*
This package is not auto-updated.
Last update: 2024-09-14 18:58:30 UTC
README
一个控制器和处理程序,让您在Laravel中轻松构建使用精细粒度CRUD资源的REST API。它还提供了使用Laravel内置异常处理的一致性错误响应。
首先,在你的模型中想要使用之前,确保添加一个$fillable参数,包括所有通过API方法填充的字段,例如:
protected $fillable = ['name', 'formattedAddress', 'latitude', 'longitude'];
注意这一点很重要,因为它还用于在不需要时隐藏这些字段。例如,当创建记录时,我们不希望将数据发送回客户端。从数据库中反映这些字段将更加复杂,所以我们简单地利用这个属性。
然后,创建一个继承自RestController的控制器子类,例如VenueController
use Malhal\RestApi\RestController;
class VenueController extends RestController
{
}
最后,在你的api.php路由文件中添加
Route::resource('venue', 'VenueController', ['except' => [
'create', 'edit'
]]);
现在您可以通过POST到api/venue创建地点,通过PUT替换它,或通过PATCH更新它。您还可以使用GET进行查询,或通过api/venue/1获取单个记录。
作为额外的奖励,为了支持批量更新,请添加
$this->post('batch', '\Malhal\RestApi\RestController@batch');
并提交一个包含请求数组的JSON,如下所示
{
"atomic" : true,
"requests":
[
{
"url" : "api/venue/1000",
"method" : "PUT",
"body" : {
"name" : "Test Venue"
}
},
{
"url" : "api/password",
"method" : "POST",
"body" : {
"password" : "12345679",
"venue_id" : 1000
}
}
]
}
并将原子标志设置为在请求失败时回滚。
如果您想添加验证,只需覆盖一个方法并在必要时更改查询,例如:
class PasswordController extends RestController
{
public function index(Request $request)
{
$this->validateQuery($request, [
'venue_id' => 'required|integer'
]);
return $this->newModel()->where('venue_id', $request->get('venue_id'))->get();
}
public function store(Request $request){
$this->validateJson($request, [
'venue_id' => 'required|integer'
]);
return parent::store($request);
}
}
现在如果提交的密码缺失venue_id,则RestHandler将返回以下错误
{
"error": "QueryException",
"driverCode": "1364",
"reason": "Field 'name' doesn't have a default value",
"code": "HY000"
}
安装
要获取Laravel-RestApi的最新版本,只需使用Composer要求项目
$ composer require malhal/laravel-restapi dev-master