Ich versuche HTML auf eine Seite zu schreiben, wenn ein bestimmter Weg getroffen wird:Wie schreibe ich HTML in ein Handle?
import Control.Monad
import Data.Char
import System.IO
import Network
import Data.Time.LocalTime
data RequestType = GET | POST deriving (Show)
data Request = Request { rtype :: RequestType, path :: String, options :: [(String,String)] }
data Response = Response { version :: String, statuscode :: Int }
instance Show Response where
show r = version(r) ++ " " ++ show(statuscode(r)) ++ " " ++ (case statuscode(r) of
100 -> "Continue"
200 -> "OK"
404 -> "Not Found") ++ "\r\n\r\n"
-- respond function
respond :: Request -> Handle -> IO()
respond request handle = do
putStrLn $ show request
let response = Response {version = "HTTP/1.1", statuscode = 200}
hPutStr handle $ show(response)
hPutStr handle $ "Haskell says " ++ (getMessage request)
where getMessage r
| (path r) == "/hello" = "<b>hello there!</b>" <-- HERE
| otherwise = (path r)
ich ohne Fehler diesen Code ausführen kann, aber wenn ich http getroffen: // {Hostname}/hallo ich die String <b>hello there!</b>
bedeutet, dass der HTML-Code als String gerendert wird.
Wie rende ich es als HTML?
HINWEIS
ich dies mit Vanille Haskell tun wollen, keine Bibliotheken 3. Partei bedeutet.
Welches Web-Framework/welche Bibliothek verwenden Sie? – ErikR
Bitte lesen Sie den Hinweis, no framework – dopatraman
Geben Sie einen 'Content-type:' header aus? Was wird 'hPutStr handle $ show (response)' tatsächlich ausdrucken? – ErikR