Когда я задался вопросом, а как сделать нормальный роутер (который мапит роуты на обработчики, а не тот который wi-fi), то все кончилось тем, что меня послали читать книгу про создание интерпритаторов: https://craftinginterpreters.com/ Вы только не подумайте. Я понимаю, как сделать "просто чтобы работало", но вот сделать реально хорошо реально сложно. Реально. Реально. Реально. Реально. Реально?
-
В первом приближении берем Hashmap и грузим туда роуты в качестве ключей, а обработчики в качестве значений.
-
Во втором приближении строим дерево путей, где на любом узле или листе может висеть обработчик. В такую конструкцию будет проще навешивать middleware на саброуты.
-
В третьем приближении нам нужно строить синтаксическое дерево, чтобы добавить обработку паттернов и переменных пути. Вот чтобы это понимать меня и послали изучать построение интерпретаторов.