带斜杠的 Slim 3 参数

Slim 3 parameter with slash

我有一个用 Slim 3 构建的 API,路由定义为

$app->get('/usage/{protocol}', function(Request $request, Response $response, array $args) {
  $protocol = !empty($args['protocol']) ? sanitize($args['protocol']) : null;
  // do something...
});

我的问题是 protocol 参数可以多次包含斜杠字符 / 即:2022-123/A/B/C.

当我请求 http://example.com/api/usage/2022-123/A/B/C 时,出现以下错误:

GET http://example.com/api/usage/2022-123/A/B/C resulted in a 404 Not Found response.

如何解决此问题,使其将整个文本视为一个参数?

试试这个

$app->get('/usage[/{protocol:.*}]', function(Request $request, Response $response, array $args) {
  $protocol = $request->getAttribute('protocol')
  // do something...
});