在 Scotty webapp 中从内存中提供静态文件
Serve static files from memory in Scotty webapp
为了便于应用程序重新定位,我想在我的 Scotty 应用程序中从内存而不是磁盘提供静态文件。我目前正在使用 wai-middleware-static
to serve files from disk but I see that there is a wai-app-static
可以做到这一点,但它不是 Middleware
.
的形式
我可以将 wai-app-static
Application
变成 Middleware
还是我缺少另一个包裹?
我找不到我要找的东西所以我自己做了:https://github.com/adamse/wai-middleware-static-embedded 基于 wai-middleware-static
.
它提供了一个功能
static :: [(FilePath, ByteString)] -> Middleware
如果文件在提供的列表中,它会提供文件。
Middleware
的类型为 Application -> Application
。所以如果你
想把 someApplication
变成 Middleware
,你可以这样做
它是:
staticMiddleware :: Middleware
staticMiddleware = \app -> someApplication
你扔掉了一个 Application
和 return 的参数
你想要的应用程序,现在你有 Middleware
!
可能不是很有用Middleware
。你可能想看看
要求搞清楚怎么处理?比如,一些请求正在进行
由这个静态服务器中间件处理,其他人正在处理
要处理您的常规服务器?
也许你可以这样做:
someMiddleware :: Middleware
someMiddleware = \app -> branchingApp
branchingApp :: Application
branchingApp req functionReqToRecieved =
if iWantToStaticServeThis req
then staticApp req functionReqToRecieved
else dynamicApp req functionReqToRecieved
这是糟糕的代码,所以请不要复制,但我希望它能理解这个想法?
一个Application
是一个函数:Request -> (Response -> IO
ResponseReceived) -> IO ResponseReceived
。我想说怎么用
第一个参数(请求)。所以,与其说这个
Middleware
return这个预定义的应用程序,我正在构建我的
拥有 Application
,只看一下 Request
并决定
Application
应该处理它。然后它传递参数
回到 Application
.
某处可能有辅助函数可以为您执行此操作,
也是,但我不确定。
为了便于应用程序重新定位,我想在我的 Scotty 应用程序中从内存而不是磁盘提供静态文件。我目前正在使用 wai-middleware-static
to serve files from disk but I see that there is a wai-app-static
可以做到这一点,但它不是 Middleware
.
我可以将 wai-app-static
Application
变成 Middleware
还是我缺少另一个包裹?
我找不到我要找的东西所以我自己做了:https://github.com/adamse/wai-middleware-static-embedded 基于 wai-middleware-static
.
它提供了一个功能
static :: [(FilePath, ByteString)] -> Middleware
如果文件在提供的列表中,它会提供文件。
Middleware
的类型为 Application -> Application
。所以如果你
想把 someApplication
变成 Middleware
,你可以这样做
它是:
staticMiddleware :: Middleware
staticMiddleware = \app -> someApplication
你扔掉了一个 Application
和 return 的参数
你想要的应用程序,现在你有 Middleware
!
可能不是很有用Middleware
。你可能想看看
要求搞清楚怎么处理?比如,一些请求正在进行
由这个静态服务器中间件处理,其他人正在处理
要处理您的常规服务器?
也许你可以这样做:
someMiddleware :: Middleware
someMiddleware = \app -> branchingApp
branchingApp :: Application
branchingApp req functionReqToRecieved =
if iWantToStaticServeThis req
then staticApp req functionReqToRecieved
else dynamicApp req functionReqToRecieved
这是糟糕的代码,所以请不要复制,但我希望它能理解这个想法?
一个Application
是一个函数:Request -> (Response -> IO
ResponseReceived) -> IO ResponseReceived
。我想说怎么用
第一个参数(请求)。所以,与其说这个
Middleware
return这个预定义的应用程序,我正在构建我的
拥有 Application
,只看一下 Request
并决定
Application
应该处理它。然后它传递参数
回到 Application
.
某处可能有辅助函数可以为您执行此操作, 也是,但我不确定。