2014-03-24 13 views
30

Ich möchte eine Webseite mit dem warp Webserver in Haskell erstellen. Da ich ein Haskell-Anfänger bin, sind Beispiele wie this one zu komplex für mich.Minimaler Warp Webserver Beispiel

Kann mir jemand ein einfaches, minimales Beispiel zeigen, wie man Warp verwendet?

Hinweis: Diese Frage zeigt absichtlich keine Forschungsanstrengungen, da sie Q & A-Style beantwortet wurde.

Antwort

44

Hier ist eine minimale Hallo Welt Anwendung mit Warp 3.0 +. Führen Sie es aus und navigieren Sie zu http://localhost:3000. In diesem Beispiel wird Hello world angezeigt.

Um dieses Beispiel minimal zu halten, werden URL-Pfade überhaupt nicht behandelt (der gleiche Inhalt wird für jeden Pfad geliefert). Für ein etwas längeres Beispiel-URL-Pfad Handhabung enthält, siehe the Haskell Wiki

{-# LANGUAGE OverloadedStrings #-} 

import Network.Wai (responseLBS, Application) 
import Network.Wai.Handler.Warp (run) 
import Network.HTTP.Types (status200) 
import Network.HTTP.Types.Header (hContentType) 

main = do 
    let port = 3000 
    putStrLn $ "Listening on port " ++ show port 
    run port app 

app :: Application 
app req f = 
    f $ responseLBS status200 [(hContentType, "text/plain")] "Hello world!" 

-Update 2014.06.20: Warp 3.0 einige API-Änderungen enthielt - reflektieren sie im Code zurück.

+6

Bitte erläutern Sie den Downvote, nur durch das Abstimmen wird der Beitrag nicht besser! –

+2

dieses Beispiel scheint nicht auf der aktuellen Version von Warp (3.0.0.3) zu funktionieren? Konnte nicht übereinstimmen Typ "Network.Wai.Internal.Response" mit 'IO Network.Wai.Internal.ResponseReceived ' – Fil

+1

@Fil Danke für den Bericht, ich werde es mir ansehen! –