首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Happstack中间件缺乏?

Happstack中间件缺乏?
EN

Stack Overflow用户
提问于 2012-12-18 07:56:16
回答 1查看 171关注 0票数 2

我经常遇到这样的情况,我们在list和.中有ServerPart Response MonadPlus。然后,msum选择没有失败的那个,并生成并返回响应。

我认为一些操作-比如检查cookies准备连接上下文(授权经过身份验证的用户,实现计数等)应该在任何传入的请求中完成-甚至还没有定义任何路径信息。

也许有一些时髦的词我还不知道,特别是对于这种类型的员工。有人能给点建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 12:41:33

如果您希望对每个请求执行某些操作,则可以在路由代码之前的do语句中添加这些操作。例如:

代码语言:javascript
复制
module Main where

import Happstack.Server

main = simpleHTTP nullConf $ do incCounter
                                mUser <- checkUserAuth
                                resp <- msum [ part1
                                             , part2
                                             , part3 mUser
                                             ]
                                logResponse resp
                                return resp

它将始终运行incCountercheckUserAuth。然后它会尝试不同的路线。

如果其中一个路由匹配,它将调用logResponse,最后返回将发送给用户的resp

请注意,虽然incCountercheckUserAuth将始终运行,但logResponse仅在其中一个部分匹配时才会运行。如果没有,那么我非常确定代码将转义并返回404。如果您希望logResponse始终运行,那么可以向msum添加一个始终匹配的处理程序。例如:

代码语言:javascript
复制
                 resp <- msum [ part1
                              , part2
                              , part3 mUser
                              , notFound $ toResponse "Sorry, page not found."
                              ]

这几乎总是会运行。如果其中一个部分匹配,但显式调用了'escape',那么我非常确定logResponse仍然不会运行。也有一些方法可以解决这个问题。

但是,简短的答案是,如果您希望发生某些事情,甚至是时间,只需将其放在msum代码之前。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13924273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档