Как обслуживать статический контент, используя Spock (Haskell)?

Я использую сервер Spock и хочу обслуживать некоторый статический контент. я использую respondMiddleware функция из пакета "Web.Spock.Action".

Подпись:

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

Я получаю это "Middleware", используя staticPolicy функция из пакета "Network.Wai.Middleware.Static"

    staticPolicy :: Policy -> Middleware

И "Политика" с помощью addBase из пакета "Network.Wai.Middleware.Static"

    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 ответ

Решение

Правильный способ сделать это - использовать html функция из пакета Web.Spock.Action.

Я использовал шаблоны jinja с помощью ginger для параметризации моего html-файла, а затем подал его с помощью html функция.

import qualified Web.Spock.Action as SA

serveHtml :: JinjaTemplate -> SA.ActionT (LoggingT IO) ()
serveHtml tmplt = SA.html tmplt
Другие вопросы по тегам