Универсальный маршрут Йесод

Я создаю приложение yesod, которое состоит из двух частей. Остальное API (yesod) и клиентская часть (angularjs).

Помимо того, что это API для отдыха, yesod также отправляет исходный html клиенту для запуска angularjs. У меня работает так:

конфиг/маршруты:

/user GET
/someOtherEntity GET POST
/ HomeR GET --route to send the html

Обработчик/Home.hs

getHomeR :: Handler Html                                                                            
getHomeR = sendFile typeHtml "frontend/build/index.html" 

Пока первый URL-адрес www.mydomain.com/, это работает нормально, но когда я перехожу на www.mydomain/some-angular/route, я получаю 404 от yesod.

Я пробовал это:

/#Text HomeR GET

Это отлично работает для /my-angular-route, но ломается в /my-angular-route/param. Я мог бы добавить /#Text/#Text, я полагаю, но, конечно, есть более чистый способ справиться с этим.

Как я могу реализовать какой-то универсальный маршрут? Поэтому всякий раз, когда это не URL-адрес, соответствующий маршруту, он должен просто вызывать getHomeR.


person Richard Deurwaarder    schedule 23.06.2015    source источник


Ответы (1)


Вы можете использовать маршруты, состоящие из нескольких частей, и, вероятно, потребуется отключить проверку перекрытия. Это будет выглядеть так:

!/*Texts HomeR GET

Для получения дополнительной информации см. главу о маршрутизации в Yesod книга.

person Michael Snoyman    schedule 24.06.2015