【发布时间】:2017-01-21 23:55:28
【问题描述】:
标题总结了它。我想在所有回复中添加一个标题。 我可以为我的每条路线添加一个 modifyRequest 处理程序,例如:
apiRoutes :: [(ByteString, Handler b Api ())]
apiRoutes = [("status", addHeader)]
addHeader :: Handler b Api ()
addHeader = do
modifyResponse (setHeader "Content-Type" "application/json")
otherHandler
otherHandler :: Handler b Api ()
otherHandler = metod Get doActualStuff <|> metod Get doMoreActualStuff
现在,如果我有 100 条不同的路线,并且我想将标头添加到所有路线中。我必须为所有这些路由编写一个拦截器函数。如果我想更改标题,我必须修改所有 100 个拦截器函数。
有没有简单的方法?
【问题讨论】:
-
这对我来说似乎很简短。这种方法到底有什么问题?
-
@jkeuhlen 假设我有 100 条不同的路线,我想将标头添加到所有路线中。我必须为所有这些路由编写一个拦截器函数。如果我想更改标题,我必须修改所有 100 个函数。
-
我对snap不熟悉,但你不能定义
apiRoutes = map (second (modifyResponse … *>)) [("status", otherHandler)]吗? -
@sjakobi 听起来像是一个 excelenet 的想法。我会试试看。
-
@sjakobi 我用你的提示搞定了。我有时会完全忘记 haskell 提供的工具。谢谢
标签: haskell haskell-snap-framework