使用 FOSRest BodyConverter 的 PUT 请求
Posted
技术标签:
【中文标题】使用 FOSRest BodyConverter 的 PUT 请求【英文标题】:PUT request with FOSRest BodyConverter 【发布时间】:2019-12-08 18:00:47 【问题描述】:我在使用 BodyConverter 时遇到了麻烦,通常我将 FOSRest 与 Symfony Forms 一起使用,但在一个新项目中我正在尝试使用 BodyConverter。 POST 请求工作正常,但我无法让 PUT 请求工作。
/**
* @Rest\View(serializerGroups="Default")
* @Rest\Put("/id", name="put")
* @ParamConverter("mission", converter="fos_rest.request_body")
*
* @param Mission $mission
* @param ConstraintViolationList $violations
* @return Mission | View
*/
public function put(Mission $mission, ConstraintViolationList $violations)
if(count($violations))
return $this->view($violations, Response::HTTP_BAD_REQUEST);
return $this->manager->post($mission);
使用 BodyConverter 和 ParamConverter 我想更新在 URL 中传递 ID 的资源,但 BodyConverter 只是覆盖资源并创建一个新资源。例如:
PUT /missions/1 应该更新任务 1,但它会创建一个具有新 ID 的新任务。
【问题讨论】:
【参考方案1】:return $this->manager->post($mission);
当你想更新(放置)一个对象时,这个帖子看起来很奇怪。
【讨论】:
这只是POST / PUT / PATCH常用的一种方法,用于持久化和刷新创建/更新的Mission $mission以上是关于使用 FOSRest BodyConverter 的 PUT 请求的主要内容,如果未能解决你的问题,请参考以下文章