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

Ris*_*hal 8 haskell static-content server haskell-stack haskell-spock

我正在运行Spock服务器并希望提供一些静态内容.我正在使用respondMiddleware"Web.Spock.Action"包中的函数.

签名是:

    respondMiddleware :: Monad m => Middleware -> ActionCtxT ctx m a
Run Code Online (Sandbox Code Playgroud)

我使用staticPolicy"Network.Wai.Middleware.Static"软件包中的函数获取此"中间件"

    staticPolicy :: Policy -> Middleware
Run Code Online (Sandbox Code Playgroud)

而"政策"则使用addBase来自"Network.Wai.Middleware.Static"的包

    addBase :: String -> Policy
Run Code Online (Sandbox Code Playgroud)

这是我的代码块:

    get ("/") $
      respondMiddleware $ staticPolicy $ addBase ("static")
Run Code Online (Sandbox Code Playgroud)

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

Ris*_*hal 2

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

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

import qualified Web.Spock.Action as SA

serveHtml :: JinjaTemplate -> SA.ActionT (LoggingT IO) ()
serveHtml tmplt = SA.html tmplt
Run Code Online (Sandbox Code Playgroud)