InvalidTopicPattern¶
Selyusize\EventsRouter\Exception\InvalidTopicPattern
Шаблон топика в маршруте записан с ошибкой. Исключение возникает при регистрации маршрута, поэтому ошибка в файле маршрутов видна сразу при старте приложения.
Синтаксис шаблонов — в разделе Шаблоны топиков.
Причины и исправления¶
| Сообщение | Неверно | Верно |
|---|---|---|
| шаблон пустой | '' |
order.paid |
| пустой сегмент | .order, order., order..paid |
order.paid |
| пробельные символы | order paid |
order.paid |
| не закрыта фигурная скобка | order.{order_id |
order.{order_id} |
| лишняя закрывающая фигурная скобка | order.order_id} |
order.{order_id} |
| параметр должен занимать весь сегмент | order-{order_id} |
order.{order_id} или {order_ref:order-\d+} |
* и # должны занимать весь сегмент |
ord*.paid |
*.paid |
| имя параметра должно быть в snake_case | {orderId}, {Id}, {_id}, {1id}, {order-id}, {статус} |
{order_id}, {id}, {id1}, {status} |
| пустое ограничение | {id:} |
{id} или {id:\d+} |
| ошибка в regex параметра | {id:(\d+} |
{id:(\d+)} |
| параметр встречается дважды | user.{id}.order.{id} |
user.{user_id}.order.{order_id} |
Регулярные выражения¶
Ограничение параметра — регулярное выражение PCRE. Оно проверяется на весь сегмент, поэтому ^ и $ не нужны. Ошибка компиляции выражения выводится в сообщении как есть, например missing closing parenthesis.
Внутри ограничения фигурные скобки должны быть сбалансированы: {code:\d{3}} — верно.