【问题标题】:PUT request with FOSRest BodyConverter使用 FOSRest BodyConverter 的 PUT 请求
【发布时间】: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 的新任务。

【问题讨论】:

    标签: rest api symfony fosrestbundle


    【解决方案1】:
    return $this->manager->post($mission);
    

    当你想更新(放置)一个对象时,这个帖子看起来很奇怪。

    【讨论】:

    • 这只是POST / PUT / PATCH常用的一种方法,用于持久化和刷新创建/更新的Mission $mission
    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2014-01-15
    • 2021-11-22
    相关资源
    最近更新 更多