chrisyue / auto-json-response-bundle
一个 Symfony 扩展包,其中包含一个监听器,可以将控制器返回的数据转换为适当的 JsonResponse。
1.1.1
2016-05-11 07:32 UTC
Requires
- php: >=5.5
- symfony/symfony: >=2.4
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-25 15:10:32 UTC
README
v1.1.1
一个将控制器结果转换为适当 JsonResponse 的 Symfony 监听器。
特性
- 将
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'