使用 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 请求的主要内容,如果未能解决你的问题,请参考以下文章

使用Symfony开发模式执行并发请求时Apache崩溃

Angular 1.5,错误响应状态始终为-1

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇