chrisyue/auto-json-response-bundle

一个 Symfony 扩展包,其中包含一个监听器,可以将控制器返回的数据转换为适当的 JsonResponse。

安装: 406

依赖: 0

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 1

公开问题: 0

类型:symfony-bundle

1.1.1 2016-05-11 07:32 UTC

This package is auto-updated.

Last update: 2024-09-25 15:10:32 UTC


README

v1.1.1

一个将控制器结果转换为适当 JsonResponse 的 Symfony 监听器。

SensioLabsInsight

Latest Stable Version License Build Status Scrutinizer Code Quality Code Coverage StyleCI

特性

  • null 转换为 JsonResponse(null, 204)
  • $array|$object 转换为 JsonResponse($array|$normalizedObject)
  • 如果方法是 POST,则将 $array|$object 转换为 JsonResponse($array|$normalizedObject, 201)

安装

$ composer require chrisyue/auto-json-response-bundle
// AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Chrisyue\Bundle\AutoJsonResponseBundle\ChrisyueAutoJsonResponseBundle(),
    );
}

用法

如果路由 _format 参数设置为 json,则此扩展包将生效。

# in your route file:
api:
    resource: ...
    defaults:
        _format: json

或者在您的控制器文件中使用注解时

/**
 * @Route(...)
 */
public function putAction(Response $response, $_format = 'json')
{
    ...

    return $object;
}

或者任何其他方式将 $_format 设置为 json

此扩展包使用 Symfony 内置序列化器来规范化对象,因此如果您想处理具有内置序列化器功能的对象,则应启用序列化功能

# app/config/config.yml
framework:
    # ...
    serializer:
        enabled: true

利用内置序列化器的功能,我们可以进行更多配置以满足我们的需求,例如将 camelCase 属性转换为 snake_case

# app/config/config.yml
framework:
    serializer:
        enable_annotations: true
        name_converter: serializer.name_converter.camel_case_to_snake_case

有关序列化的更多信息,请参阅 symfony 官方文档

从 v1.1.0 版本开始,此扩展包支持指定默认序列化组

#app/config/config.yml
chrisyue_auto_json_response:
    serializer:
        default_groups:
            - 'group1'
            - 'group2'