wobblecode/rest-bundle

一个基于您当前控制器操作的创建REST Api的包

v1.1.0 2020-12-29 07:33 UTC

README

为Symofny 3 & 4快速创建RESTful Apis

一个在几秒钟内基于您当前控制器操作创建RESTful Apis的包,仅使用注解。如果您需要在同一域名或页面上访问基本的RESTful API,这将非常有帮助。

实际案例:如果您使用Backbone,您可以渐进式增强支持常见CRUD的功能,以及一个简单的页面CRUD,从而快速实现RESTful API...

主要功能

  • 与您的当前控制器兼容
  • 与您的当前Symfony表单兼容
  • 拦截当前重定向
  • 支持版本API
  • 基于内容协商的API
  • 与JMSSerializerBundle集成
  • 与KnpPaginatorBundle集成以获取元数据

Latest Stable Version Total Downloads Travis License SensioLabsInsight

快速示例

这是使用示例中最基本的示例。只需添加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文件。