【发布时间】:2019-08-31 16:32:05
【问题描述】:
我有一个更新给定实体的端点,响应应该是更新后的实体。我因此尝试了以下操作,但是,重定向是另一个 PUT 请求。如何响应 GET 请求?
$app->put('/foo/{id:[0-9]+}', function (Request $request, Response $response, $args) {
$this->foo->update($args['id'], $request->getParsedBody());
return $response->withRedirect("/foo/$args[id]");
});
【问题讨论】:
-
@Mike'Pomax'Kamermans 表单提交不使用
PUT。 -
不,但这并不是实现重定向的重要部分?
-
301/302 可以将请求更改为
GET,307 将保证不会更改。 http 请求方法来自客户端,所以我不确定如何用 GET 请求“响应”。我认为您要做的是重定向并让/foo/[id]进行实际更新,而不是试图假装响应来自/foo。删除$this->foo->update(...)调用并改为公开该端点。现在->withRedirect("/foo/$args[id]")将在客户端的正确端点进行更新。 -
@AlexBarker 使用请求正文提供的内容更新实体,并将实体的 JSON 表示返回给客户端。为了实现这一点,我希望
PUT /foo/[id]请求重定向到GET /foo/[id]请求,该请求提供实体的 JSON 表示。
标签: php httpresponse router slim slim-3