Скажем, мне нужно проверить какой-то URI, прежде чем я подам какой-то результат. Я могу сделать что-то вроде этого:
sub type-routes {
route {
get -> Str $type where $type ∈ @food-types {
my %ingredients-table = $rrr.calories-table;
my @result = %ingredients-table.keys.grep: {
%ingredients-table{$_}{$type} };
content 'application/json', @result;
}
get -> Str $type where $type ∉ @food-types {
not-found;
}
}
}
По сути, разные сигнатуры для существующих и несуществующих продуктов в этом случае. Однако тот же URI будет использоваться на всех маршрутах. Было бы интересно иметь возможность проверить его до сопоставления любого маршрута, чтобы, когда он достигнет блока маршрута, мы знали, что все в порядке. Таким образом, его можно было повторно использовать на разных маршрутах.
Я проверил before
и before-match
, и, очевидно, вы можете это сделать, но вам нужно проанализировать объект запроса, чтобы добраться до него, нет простого способа сделать это.
В качестве альтернативы, существует ли способ определения «запасного маршрута», чтобы, если URI не был найден, возвращался не найденный?