wobblecode / rest-bundle
一个基于您当前控制器操作的创建REST Api的包
Requires
- php: ~7.1
- doctrine/common: ~2.2
- symfony/dependency-injection: ~3.0|~4.0
- symfony/framework-bundle: ~3.0|~4.0
Requires (Dev)
- doctrine/doctrine-bundle: *
- doctrine/orm: *
- jms/serializer-bundle: ~1.1.0|^2.0
- phpunit/phpunit: ^5.3
- sensio/framework-extra-bundle: *
- symfony/browser-kit: *
- symfony/class-loader: *
- symfony/css-selector: *
- symfony/finder: *
- symfony/form: *
- symfony/process: *
- symfony/security-csrf: *
- symfony/templating: *
- symfony/twig-bundle: *
- symfony/validator: *
- symfony/yaml: ~3.1
Suggests
- jms/serializer-bundle: ~1.1.0|^2.0
README
为Symofny 3 & 4快速创建RESTful Apis
一个在几秒钟内基于您当前控制器操作创建RESTful Apis的包,仅使用注解。如果您需要在同一域名或页面上访问基本的RESTful API,这将非常有帮助。
实际案例:如果您使用Backbone,您可以渐进式增强支持常见CRUD的功能,以及一个简单的页面CRUD,从而快速实现RESTful API...
主要功能
- 与您的当前控制器兼容
- 与您的当前Symfony表单兼容
- 拦截当前重定向
- 支持版本API
- 基于内容协商的API
- 与JMSSerializerBundle集成
- 与KnpPaginatorBundle集成以获取元数据
快速示例
这是使用示例中最基本的示例。只需添加Rest注解,API将通过内容协商可用。因此,如果您请求JSON,它将返回JSON格式的架构;如果请求HTML,它将回退到@Template,从而渲染相关视图。
如果可能,它还将使用JSMSerializer在模型中使用。
use WobbleCode\RestBundle\Configuration\Rest;
/**
* @Route("/")
* @Template()
* @Rest()
*/
public function indexAction()
{
...
return array(
'entities' => $entity
);
}
使用httpie的示例(如有需要,请替换您的URL)
http http://localhost:8000 --json
HTTP/1.1 200 OK
Cache-Control: max-age=0, must-revalidate, no-cache, no-store, public, s-maxage=0
Connection: close
Content-Type: application/json
Host: localhost:8000
X-Debug-Token: 243d5e
X-Debug-Token-Link: /_profiler/243d5e
X-Powered-By: PHP/5.5.7
{
"entities": [...],
"metadata": {
"count": 10,
"items_per_page": 10,
"page_number": 1,
"total_count": 244
}
}
设置
添加到composer
"wobblecode/rest-bundle": "dev-master",
在Kernel中启用bundle
new WobbleCode\RestBundle\WobbleCodeRestBundle()
选项
所有示例显示默认值。
输出
从返回数组中序列化默认对象的列表。
/**
* @Rest(output={"entity", "entities", "meta"})
*/
public function indexAction()
{
...
return array(
'user' => $user,
'post' => $post,
'entity' => $entity
);
}
只有entity
值将被序列化并返回。
serializeGroups
要使用序列化程序(请参阅JMSSerializerBundle组)的组列表。默认情况下,如果没有定义,将序列化所有组
/**
* @Rest(serializeGroups={"api", "ui-admin"})
*/
acceptedContent
启用REST的接受头列表
/**
* @Rest(acceptedContent={"application/json"})
*/
您必须发送Accept: application/json
才能启用REST API功能。如果没有匹配,它将回退到控制器视图。
defaultAccept
如果缺少Accept头,您可以使用defaultAccept设置默认值
/**
* @Rest(defaultAccept="application/json")
*/
如果缺少Accept头,默认值是text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
payloadMapping
定义是否将有效载荷分配给POST值。这对于表单非常有用,因为表单通常期望在以表单名称命名的POST变量下接收,例如:$_POST['my_form_name']
/**
* @Rest(payloadMapping="form")
*/
statusCodeParam
用于覆盖状态码响应的参数。
/**
* @Route("/")
* @Template()
* @Rest(statusCodeParam="status_code")
*/
public function indexAction()
{
...
return array(
'status_code' => '403'
);
}
versionRequired
如果为true,强制在Accept头中发送版本
/**
* @Rest(versionRequired=false)
*/
defaultVersion
定义API的默认版本,默认为false,不进行版本控制
interceptRedirects
拦截3xx重定向并响应闪存消息
processForms
处理表单错误
defaultFormParam
处理具有名称form的参数作为主要表单进行验证
配置
您可以在bundle配置中设置序列化null属性。
wobble_code_rest: serialize_null: false
许可
版权(c)2016 Luis Hdez
在MIT许可证下发布,更多信息请参阅LICENSE-MIT文件。