Middleware
有类型Application -> Application
。所以如果你想someApplication
变成Middleware
,你可以这样做的一种方法是:
staticMiddleware :: Middleware
staticMiddleware = \app -> someApplication
你扔掉一个参数Application
并返回你想要的应用程序,现在你有了Middleware
!
可能不是很有用Middleware
。您可能想查看请求以了解如何处理它?比如,一些请求将由这个静态服务器中间件处理,而其他请求将由您的常规服务器处理?
也许你可以做这样的事情:
someMiddleware :: Middleware
someMiddleware = \app -> branchingApp
branchingApp :: Application
branchingApp req functionReqToRecieved =
if iWantToStaticServeThis req
then staticApp req functionReqToRecieved
else dynamicApp req functionReqToRecieved
这是很糟糕的代码,所以请不要复制,但我希望它能传达这个想法?
AnApplication
是一个函数:Request -> (Response -> IO
ResponseReceived) -> IO ResponseReceived
. 我想说如何使用第一个参数(请求)。因此,我没有说这会
Middleware
返回这个预定义的应用程序,而是构建自己的应用程序,Application
它只是查看Request
并决定Application
应该处理它。然后它将参数传回给Application
.
某处可能也有一个辅助函数可以为您执行此操作,但我不确定。