Haskell Happstack, могу ли я использовать строку с HTML-тегами в качестве ответа?

    module Main where

    import Happstack.Lite
    import Text.Html

    main :: IO ()
    main = serve Nothing $ msum [
              nullDir >> ok homePage
            , notFound page404  
        ]

    homePage :: Response
    homePage = toResponse $ do
        p (toHtml "hello") +++ 
            strong (toHtml "BOLD")

    page404 :: Response
    page404 = toResponse "<strong>How do I parse the tag STRONG?</strong>"

Привет, я новичок в happystack. Мне интересно, есть ли способ, которым я могу просто отобразить строку с тегами HTML в качестве ответа вместо использования библиотеки шаблонов HTML?

В приведенном выше коде <strong> тег на странице 404 экранирован, поэтому я получил<strong>How do I pase the tag BOLD?</strong>msgstr "как ответ, в то время как один homePage отображается как"Как мне разобрать тег BOLD".

Должен ли я сначала проанализировать строку? Но разве это не будет слишком медленно, если строка html большая?

Заранее спасибо.

1 ответ

Решение

ToMessage String instance устанавливает тип ответа text/plain, а не text/html.

Вы можете написать свой собственный экземпляр для новичка String по сути, это копия исходного экземпляра, но с типом ответа, установленным в text/html, или с использованием различных средств в библиотеке для изменения типа ответа.

Кроме того, вы, вероятно, должны заметить, что отправка HTTP-ответа 200 на ошибку 404 сбивает с толку.

Другие вопросы по тегам