Я совершенно не знаком с Haskell, так что, вероятно, это основной c вопрос.
У меня есть следующий код веб-сервера, который выводит «Hello World!» когда вы переходите к http://localhost:8080
в своем браузере.
Я пытаюсь вместо того, чтобы показать «Hello World!» Я хочу видеть только данные запроса, такие как заголовки, путь, хост, тело и т. Д. c.
Возможно ли это?
{-# LANGUAGE OverloadedStrings #-}
import Data.ByteString.Char8 ()
import Network hiding ( accept )
import Network.Socket ( accept )
import Network.Socket.ByteString ( sendAll )
import Control.Monad ( forever )
import Control.Exception ( bracket, finally )
import Control.Concurrent ( forkIO )
main :: IO ()
main = bracket (listenOn $ PortNumber 8080) sClose loop where
loop s = forever $ forkIO . request . fst =<< accept s
request c = sendAll c response `finally` sClose c
response = "HTTP/1.0 200 OK\nContent-Length: 13\n\nHello World!\n"
Или, как вариант, тот же logi c с пакетом Warp:
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp
import Network.HTTP.Types (status200)
import Blaze.ByteString.Builder (copyByteString)
import qualified Data.ByteString.Lazy as BU
import Data.Monoid
main = do
let port = 8080
putStrLn $ "Listening on port " ++ show port
run port app
app req respond = respond $
case pathInfo req of
x -> index x
index x = responseBuilder status200 [("Content-Type", "text/plain")] $ mconcat $ map copyByteString
[ "Hello World!\n" ]
Мне просто нужно указать информацию о запросе вместо «Hello World ! "