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

时间:2017-12-06 08:06:16

标签: haskell server haskell-stack static-content haskell-spock

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

签名是:

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

我得到了这个"中间件"使用" Network.Wai.Middleware.Static"中的staticPolicy函数封装

    staticPolicy :: Policy -> Middleware

"政策"使用来自" Network.Wai.Middleware.Static"的addBase封装

    addBase :: String -> Policy

这是我的代码块:

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

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

1 个答案:

答案 0 :(得分:2)

正确的方法是使用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