0

我希望用户能够访问myserver.com并来到索引路由。

我想在他们访问时显示列表页面myserver.com/pages

但是,如果用户访问一个无效的 url,例如myserver.com/invalidpath/blabla它落入indexPage路由。

我想在404 page访问无效网址时回复。

这是我的路线示例:

  1 routes :: ServerPart Response                                                                                                                                                                                   
  2 routes = msum                                                                                                                                                                                                   
  3     [ dirs "pages/delete" $ delete                                                                                                                                                                              
  4     , dirs "pages/edit"   $ edit                                                                                                                                                                                
  5     , dirs "pages/save"   $ save                                                                                                                                                                                
  6     , dirs "pages"        $ listPages                                                                                                                                                                           
  7     , indexPage]  

我现在想到的是,在我的indexPage函数中,我可以检查路径是否包含任何内容或是否为空。通过这种方式,我可以确定失败是来自无效 url 还是索引页面访问。

有没有好的方法来做到这一点?

4

1 回答 1

3

在写这个答案时,我在关于 hackage 的文档中找到了解决方案。

nullDir当路径为空时,有一个函数被调用。

使用此功能,我的示例路线如下所示:

  1 routes :: ServerPart Response                                                                                                                                                                                   
  2 routes = msum                                                                                                                                                                                                   
  3     [ dirs "pages/delete" $ delete                                                                                                                                                                              
  4     , dirs "pages/edit"   $ edit                                                                                                                                                                                
  5     , dirs "pages/save"   $ save                                                                                                                                                                                
  6     , dirs "pages"        $ listPages                                                                                                                                                                           
  7     , nullDir >> indexPage
  8     , 404Page]  

现在index page 仅在路径为空时404 page显示,并且为所有其他跌落显示 。

于 2013-10-03T13:24:04.957 回答