Minimal Warp webserver example
Asked Answered
M

1

38

I want to create a website using the Warp webserver in Haskell.

As I'm a Haskell beginner, examples like this one are too complex for me.

Can anyone show me a simple, minimal example of how to use Warp?

Note: This question intentionally shows no research effort as it was answered Q&A-style.

Myel answered 24/3, 2014 at 20:49 Comment(0)
M
61

Here's a minimal Hello World application using Warp 3.0+. Run it, then navigate to http://localhost:3000. This example will show Hello world.

In order to keep this example minimal, URL paths are not handled at all (the same content is delivered for any path). For a slightly longer example incorporating URL path handling, see 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!"
Myel answered 24/3, 2014 at 20:49 Comment(2)
Please explain the downvote, just downvoting this won't make the post any better!Sand
Note that the first line including OverloadedString is significant, because it allows the conversion of normal strings to ByteStrings. Otherwise this example would need to be modified to explicitly convert strings like "text/plain" and "Hello world!" to ByteStrings via Blaze.ByteString.Builder.Char8 and/or Data.ByteString.Char8.Extrusion

© 2022 - 2024 — McMap. All rights reserved.