shooktea / request-deserializer-bundle
将JSON请求反序列化为对象并验证的小型包
1.0.0
2022-01-24 11:44 UTC
Requires
- php: 8.*
- symfony/framework-bundle: 6.*
- symfony/serializer: 6.*
- symfony/validator: 6.*
README
在PHP 8.1和Symfony 6.0上进行了测试。
安装
使用Composer安装
composer require shooktea/request-deserializer-bundle
并将包添加到bundles.php
中(如果未由Symfony Flex自动添加)
<?php return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], // ... ShookTea\RequestDeserializerBundle\ShookTeaRequestDeserializerBundle::class => ['all' => true], ];
如何使用它?
- 创建一个实现
ShookTea\RequestDeserializerBundle\Query\QueryInterface
(用于GET参数)或ShookTea\RequestDeserializerBundle\Request\RequestInterface
(用于POST参数)的类 - 如有必要,添加来自
symfony/serializer
和symfony/validator
组件的注解 - 将您的类注入到控制器方法中
就是这样!
示例查询类:(用于GET参数)
<?php use ShookTea\RequestDeserializerBundle\Query\QueryInterface; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Serializer\Annotation\SerializedName; class ExampleQuery implements QueryInterface { #[SerializedName('id')] #[Assert\Uuid] public string $uuid; }
在控制器中的使用
class ExampleController extends AbstractController { #[Route('/some/route')] public function someAction(ExampleQuery $query) { // do something with query } }
请求/some/route?id=217c26de-132e-49f7-a17d-fd80a70e3fe3
后,在控制器的someAction()
方法中,对象$query
将包含值为"217c26de-132e-49f7-a17d-fd80a70e3fe3"的$uuid
。