Слэш в жетоне Танцора
Я хотел бы интерпретировать, например, такой запрос:
GET /my/path?foo=bar
как если бы он был на самом деле переписан, например, в
GET /?path=/my/path&foo=bar
Теперь я думал, что смогу добиться этого, используя следующий маршрут, и использовать param('path')
вместе с param('foo')
и лайки, например:
get '/:path' => sub {
return printf "...so you want %s, thinking that best foo is %s...",
param('path'),
param('foo');
}
но я получаю 404 - Кажется, что :path
часть не может содержать косые черты.
Можно ли вообще добиться этого с помощью маршрутов? Или я смотрю в неправильном направлении (я новичок в Dancer)?
1 ответ
Возможно, вы захотите сопоставить маршрут по регулярному выражению вместо токена. Затем совпадения сохраняются в специальном массиве, который можно вернуть по ключевому слову. splat
, Ваш path
не будут доступны param('path')
, хоть.
Код:
get qr{/([^?]*)} => sub {
my ($path) = splat;
return printf "...so you want %s, thinking that best foo is %s...",
$path,
param('foo');
}