Yesod 包罗万象的路线

Yesod catchall route

我正在构建一个由两部分组成的 yesod 应用程序。其余 api (yesod) 和客户端 (angularjs).

除了休息api,yesod还会发送初始html给客户端启动angularjs。我让它像这样工作:

config/routes:

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

Handler/Home.hs

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

只要第一个 url 是 www.mydomain.com/ 就可以正常工作,但是当我访问 www.mydomain/some-angular/route 我从 yesod 收到 404。

我试过这个:

/#Text HomeR GET

这对 /my-angular-route 工作正常,但在 /my-angular-route/param 上中断。我想我可以添加 /#Text/#Text,但肯定有更简洁的处理方式。

如何实现某种捕获所有路由?因此,只要它不是匹配路由的 url ,它就应该调用 getHomeR.

您可以使用多段路线,并且可能需要关闭重叠检查。这看起来像:

!/*Texts HomeR GET

有关详细信息,请参阅 Yesod 书的 the routing chapter