Как я могу изменить путь URI Slim Request?Я попробовал следующее, однако, withPath()
клонирует URI, таким образом, объект запроса не изменился.Если это невозможно, существует ли простой процесс создания нового Slim-запроса на основе исходного запроса, но с новым путем URI?
Исходная информация о том, почему я хочу это сделать.У меня есть метод, который принимает запрос Slim, выполняет запрос cURL на другой сервер с помощью Guzzle, пишет в Slim Response и возвращает Slim Response.API, который Guzzle запрашивает почти тот же путь, но с номером версии.
$app->get('/{basetype:guids|tester}/{guid}/logs/{id:[0-9]+}', function (Request $request, Response $response, $args) {
switch($request->getQueryParam('ContentType')) {
case 'text':
//
return $this->view->render($response, 'log.html', $rs);
case 'file':
$uri=$request->getUri();
$path=$uri->getPath();
$uri->withPath(_VER_.$path);
return $this->serverBridge->proxy($request, $response, 'application/octet-stream');
}
});
class ServerBridge
{
protected $httpClient;
public function __construct(\GuzzleHttp\Client $httpClient)
{
$this->httpClient=$httpClient;
}
public function proxy(\Slim\Http\Request $slimRequest, \Slim\Http\Response $slimResponse):\Slim\Http\Response {
//$slimRequest is used to obtain data to send to Guzzle
$curlResponse = $this->httpClient->request($method, $path, $options);
//use $curlResponse to get data and write to $slimResponse
return $slimResponse;
}
}