2013-10-03 27 views
0

我希望用戶能夠訪問myserver.com和前來指數路線。我該如何區分一條路線和Happstack中的索引頁訪問?

而且我想,當他們訪問myserver.com/pages顯示列表頁。

但是,如果用戶訪問了無效的網址,例如myserver.com/invalidpath/blabla,則會跳轉到indexPage路線。

我想是訪問了無效的URL時,與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功能,如果它包含任何東西,或者如果它是空的,我可以檢查的路徑。通過這種方式,我可以確定是否來自無效網址或索引頁訪問。

有沒有很好的方法來做到這一點?

回答

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