haskell - Haskell wai 中间件 - 如果从第一个应用程序返回 404,如何运行应用程序?
问题描述
我正在尝试将两个 waiApplication
一起“加入”。本质上,第一个应用程序将提供404 Not found 响应或不是404 Not found 响应的响应。我想添加第二个应用程序,如果第一种情况(第一个应用程序返回404)存在,它将尝试处理请求。
但是查看类型Application
:
type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
不清楚如何检查响应?我不会只是ResponseRecived
以最终结果结束 - 它似乎不包含任何响应代码。如下图所示:
xyzMiddle :: (Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived) ->
(Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived)
xyzMiddle app req respond = do
zzz <- (app req respond)
pure zzz
我怎么能实现这个?或者,我在上面没有理解什么?
解决方案
我忽略了这一点(Response -> IO ResponseReceived)
,因为这是在IO
上下文中 - 这是我们可以运行第二个应用程序的地方。这意味着,要检查Response
我们可以执行以下操作:
xyzMiddle :: (Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived) ->
Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
xyzMiddle app req respond = app req (\r -> do
print $ show $ responseStatus r
respond r)
推荐阅读
- spring - 如何在spring集成应用程序中停止spring框架日志
- python - scipy.integrate.solve_ivp 矢量化
- php - PHP & 嵌套条件
- php - PHP foreach 循环不更新值
- python - 使用代理和 Selenium 时 URL 发生变化
- sql - 在 Oracle 中按日期设置行顺序时遇到问题
- java - Spring WebFlux + Security - 我们有“记住我”功能吗?
- c# - Web API HttpPost 方法总是接收 GET
- css - 响应式 YouTube 嵌入式视频设置为特定尺寸,没有黑色边框
- swift - 等待 MessageKit 函数中的另一个函数完成