geosocio / http-serializer
序列化控制器请求与响应
5.2.0
2018-03-18 14:46 UTC
Requires
- doctrine/annotations: ^1.0
- symfony/http-foundation: ^3.0|^4.0
- symfony/http-kernel: ^3.0|^4.0
- symfony/serializer: ^3.0|^4.0
- symfony/validator: ^3.0|^4.0
Requires (Dev)
- phpunit/phpunit: ^6.2
- squizlabs/php_codesniffer: ^3.0
- symfony/var-dumper: ^3.3
README
序列化控制器请求与响应。
请求
POST
和 PUT
请求的内容可以被反序列化为一个对象。任何包含内容体(例如 PATCH
)的请求,其内容可以被解码为一个数组。
响应
控制器的响应将被序列化为与请求相同的格式。如果需要更高级的处理,您始终可以返回一个不带干扰的 Response
对象。
分组
可以通过分组注解将分组应用于请求或响应(或两者都应用)。
- 请求分组
GeoSocio\HttpSerializer\Annotation\RequestGroups
- 响应分组
GeoSocio\HttpSerializer\Annotation\ResponseGroups
- 请求和响应分组
Symfony\Component\Serializer\Annotation\Groups
它们也可以通过 GroupResolver
应用。
示例
/** * @Route("/post/{post}") * @Method({"GET"}) * * @Groups({"show"}) */ public function showAction(Post $post) { return $post; } /** * @Route("/post") * @Method({"POST"}) * * @RequestGroups({"create"}) * @ResponseGroups({"show"}) */ public function createAction(Post $post) { $em = $this->doctrine->getEntityManager(); $em->persist($post); $em->flush(); return $post; } /** * @Route("/post/{post}") * @Method({"PUT"}) * * @RequestGroups({"replace"}) * @ResponseGroups({"show"}) */ public function replaceAction(Post $post, Post $content) { $em = $this->doctrine->getEntityManager(); $em->merge($content); $em->flush(); return $post; } /** * @Route("/post/{post}") * @Method({"PATCH"}) * * @RequestGroups({"update"}) * @ResponseGroups({"show"}) */ public function updateAction(Post $post, array $content) { $em = $this->doctrine->getEntityManager(); $post = $this->serializer->denormalizer($content, $post); $em->flush(); return $post; } /** * @Route("/post/{post}") * @Method({"DELETE"}) */ public function deleteAction(Post $post) { $em = $this->doctrine->getEntityManager(); $em->remove($post); $em->flush(); return ''; }