spanitz / silex-restful-controller
此包已被废弃且不再维护。没有建议的替代包。
用于实现RESTful API的简单Silex控制器
1.0.0
2014-04-13 10:08 UTC
Requires
- php: >=5.3.3
- silex/silex: ~1.1
This package is not auto-updated.
Last update: 2024-07-16 00:44:14 UTC
README
RestfulControllerProvider提供了一种实现基于类的路由控制器的替代方法。
入门
只需为特定路由注册RestfulControllerProvider
<?php use spanitz\Silex\Provider\RestfulControllerProvider; $app = new Silex\Application(); $app->mount('/api', new RestfulControllerProvider());
用法
以众所周知的Todo示例为例
<?php namespace Api\Controller; use spanitz\Silex\RestfulController; class Todo extends RestfulController { public function get ($id = null) { $data = array(); // fetch multiple todos, or a single one by its $id... return $data; } public function put ($id = null) { // update todo... } public function post () { // create todo... } public function delete ($id = null) { // delete todo... } }
上述实现公开了以下路由
GET /api/todo/<id>
PUT /api/todo/<id>
POST /api/todo/
DELETE /api/todo/<id>
如您所见,实现的方法与HTTP方法相对应。如果您的控制器从RestfulController扩展,则您可以在方法中使用$this->app
访问Silex应用程序实例,并使用$this->request
访问相应的请求。
您的方法可以返回一个数组,它将被作为JsonResponse
返回;或者返回任何类型的Symfony\Component\HttpFoundation\Response
实例。
配置
如果默认命名空间Api\Controller
不符合您的需求,只需在构造函数中覆盖配置即可
$app->mount('/api', new RestfulControllerProvider(array( 'namespace' => 'My\Controller\Namespace' )));
您的RestfulController的派生类也负责正确的响应代码。如果您想覆盖此行为,可以设置以下配置
$app->mount('/api', new RestfulControllerProvider(array( 'status-codes' => array( 'post' => 200 'put' => 200 ) )));
安装
简单通过composer安装。将以下行添加到您的composer.json中
{ "require": { "spanitz/silex-restful-controller": "1.0.*@dev" }, "autoload": { "psr-4": {"Api": "src/"} } }