Я пытаюсь написать контроллер Catalyst, который соответствует указанному пути c, но с одним необязательным аргументом. Это похоже на то, что было бы идеально для Regex
, но это устарело, и я не могу понять, как использовать Chained для выполнения sh. Кроме того, я на самом деле не хочу иметь несколько методов, как это работает в Chained - я просто хочу один. лучший способ передать необязательные аргументы url в контроллере Catalyst? , но это из девяти лет go, и мне все еще неясно.)
Все, что я пытаюсь сделать соответствует пути, который может иметь ровно четыре или пять аргументов. Я использую Catalyst :: Controller :: REST, если это влияет на вещи.
sub review : Path('/review') : Args(4) : ActionClass('REST') {}
sub review_GET {
my ( $self, $c, $catalog_id, $item_id, $order_no, $event_id, $OPTIONAL_SOMETHING_ELSE) = @_;
# do stuff...
}
Вот и все. Если у меня есть простой Args()
, тогда я могу сопоставить любое количество аргументов, но я не хочу этого: я хочу сопоставить только четыре или пять аргументов. (Мне не нужно беспокоиться об ограничениях типов; я обрабатываю это в коде.) Но обработка этого должна быть такой же; Я не хочу иметь совершенно другой метод для обработки вызова с четырьмя аргументами по сравнению с вызовом с пятью аргументами, который, похоже, будет работать Chained
. То же самое будет go для двух методов, один с Args(4)
и один с Args(5)
- они не должны быть разделены.
Спасибо.