2016-05-10 6 views
2

фонаMojolicious отключить точку заполнителя маршрутизация

Я это маршрутизация

my $foo = $r->get('/foo/:asd')->to('Foo#bar');

в контроллере я просто рендеринг некоторых JSON с пройденными парами (с помощью Mojolicious::Controller::REST)

$self->data('param' => $self->param('asd'));


Проблема

При отправке запроса на /foo/bar, его работы, как и ожидалось:

{"data":{"param":"bar"}}

, но когда я пытаюсь передать строку, содержащую dot, например, по электронной почте ([email protected]), mojo передает dot как slash. Маршрутизации я определил в первую очередь не более актуальна, потому что теперь картина изменилась на foo/:bar/:baz


Решение

мне сказали, что решение здесь: https://github.com/kraih/mojo/blob/master/t/mojolicious/routes.t#L218
Это имеет смысл, но я не понимаю, как совместить это с тем, что у меня есть.

Я попытался добавить $foo->pattern->placeholder_start('+'); к моей маршрутизации, но тем не менее, шаблон меняется и его нерелевантный снова и снова. Это не похоже на то, что он отключит точку, связанную с моей проблемой.

Я попытался реализовать метод шаблона на переменной $r (громящая Mojo в - $self->routes)

Нижняя линия, мне просто нужно отключить точечный заполнитель для определенного маршрута или полностью.

Благодаря

+0

Я не понимаю. Почему вы говорите, что адрес электронной почты, такой как 'email @ email.com', имеет двоеточие? – mob

+0

извините, я имел в виду точку ('.') –

ответ

6

Mojolicious поддерживает три вида параметров заполнителей:

Standard

my $foo = $r->get('/foo/:asd')->to('Foo#bar'); 

Relaxed

my $foo = $r->get('/foo/#asd')->to('Foo#bar'); 

Wildcards

my $foo = $r->get('/foo/*asd')->to('Foo#bar'); 

Стандартные заполнители могут соответствовать всем символам, кроме . и /. Расслабленные заполнители могут соответствовать всем символам, кроме /. Подстановки шаблонов могут совпадать со всеми символами. Поэтому, если вы хотите поддерживать значения параметров . или /, вы должны использовать замещающие или подстановочные знаки.

+0

Я только что понял концепцию заполнителей и пользовательский шаблон сейчас, я просто не подошел к нему правильным путем. Спасибо. –

+0

Что вы можете использовать, когда параметр может начинаться с точки? Кажется, подстановочные знаки не работают в этом случае – Bianca

Смежные вопросы