geosocio/http-serializer

序列化控制器请求与响应

5.2.0 2018-03-18 14:46 UTC

This package is auto-updated.

Last update: 2024-09-12 01:25:44 UTC


README

序列化控制器请求与响应。

请求

POSTPUT 请求的内容可以被反序列化为一个对象。任何包含内容体(例如 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 '';
}