如何使用 Spock (Haskell) 提供静态内容?

How to serve static content using Spock (Haskell)?

我是 运行 Spock 服务器,想要提供一些静态内容。 我正在使用 "Web.Spock.Action" 包中的 respondMiddleware 函数。

签名是:

    respondMiddleware :: Monad m => Middleware -> ActionCtxT ctx m a

我正在使用 "Network.Wai.Middleware.Static" 包

中的 staticPolicy 函数获取此 "Middleware"
    staticPolicy :: Policy -> Middleware

并且 "Policy" 使用 "Network.Wai.Middleware.Static" 包中的 addBase

    addBase :: String -> Policy

这是我的代码块:

    get ("/") $
      respondMiddleware $ staticPolicy $ addBase ("static")

static有一个index.html和相关的JS和CSS文件,放在stack项目的根目录下。我得到的错误是 Failed to load resource: the server responded with a status of 400 (Bad Request)

正确的方法是使用 Web.Spock.Action 包中的 html 函数。

我使用了一个使用 ginger 的 jinja 模板来参数化我的 html 文件,然后使用 html 函数提供它。

import qualified Web.Spock.Action as SA

serveHtml :: JinjaTemplate -> SA.ActionT (LoggingT IO) ()
serveHtml tmplt = SA.html tmplt