Как я могу разделить провал маршрута и посещение страницы индекса в Happstack?
Я хочу, чтобы пользователь мог посетить myserver.com
и прийти к указателю маршрута.
И я хочу показать страницу списка, когда они посещают myserver.com/pages
,
Однако, если пользователь посещает недействительный URL, такой как myserver.com/invalidpath/blabla
это проваливается indexPage
маршрут.
Я хочу ответить с 404 page
когда неверный URL посещается.
Вот пример моих маршрутов:
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-адреса или посещения страницы индекса.
Есть ли хороший способ сделать это?
1 ответ
При написании этого ответа я нашел решение в документах по взлому.
Есть функция под названием 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
показывается для всех других провалов.