Package

purescript-httpurple

Repository
sigma-andex/purescript-httpurple
License
MIT
Uploaded by
pacchettibotti
Published on
2023-09-18T09:33:47Z

License purescript-httpurple on Pursuit

A functional http server with a focus on type-safety and making the common case easy.

Note: If you are looking for a http client, check out purescript-fetch

Note: This project was originally forked from the amazing HTTPure http server framework, but has since deviated quite a bit. If you are coming from HTTPure you might want to have a look at the differences to HTTPure.

ToC

  1. Features
  2. Installation
  3. Quick start
  4. Documenation
  5. Examples
  6. Testing
  7. License

Features

  • λ fp-style http server & request handlers
  • 🛣 Powerful & type-safe routing dsl
  • 🕵🏻‍♂️ Easy json parsing and data validation
  • 🥪 Supports Node/Express middlewares
  • 📜 Extensive documentation & examples

Installation

spago install httpurple

Quick start

module Main where

import Prelude hiding ((/))

import HTTPurple

data Route = Hello String
derive instance Generic Route _

route :: RouteDuplex' Route
route = mkRoute
  { "Hello": "hello" / segment
  }

main :: ServerM
main =
  serve { port: 8080 } { route, router }
  where
  router { route: Hello name } = ok $ "hello " <> name

then start the server

➜ spago run
           Src   Lib   All
Warnings   0     0     0  
Errors     0     0     0  
[info] Build succeeded.
HTTPurple 🪁 up and running on http://0.0.0.0:8080

query your server, e.g. using httpie

➜ http http://localhost:8080/hello/🗺  
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 10
Date: Sun, 22 May 2022 16:50:52 GMT
Keep-Alive: timeout=5

hello 🗺

Documentation

See the docs folder for the in-depth guides.

  • Basics - Basic introduction to HTTPurple 🪁
  • Routing - Explanation of the routing dsl
  • Requests - Guide to request handling
  • Response - Guide to response handling
  • Middleware - Guide to HTTPurple and Node.js middlewares
  • Differences - A detailed description of the differences to HTTPure

Examples

HTTPurple ships with a number of examples. To run an example, in the project root, run:

spago -x test.dhall run --main Examples.<Example Name>.Main

Each example's startup banner will include information on routes available on the example server.

Testing

To run the test suite, in the project root run:

spago -x test.dhall test

License

This is a fork of HTTPure, which is licensed under MIT. See the original license. This work is similarly licensed under MIT.

Modules
HTTPurple
HTTPurple.Body
HTTPurple.Cont
HTTPurple.Headers
HTTPurple.Json
HTTPurple.Lookup
HTTPurple.Method
HTTPurple.Middleware
HTTPurple.NodeMiddleware
HTTPurple.Path
HTTPurple.Query
HTTPurple.Request
HTTPurple.Response
HTTPurple.Routes
HTTPurple.Server
HTTPurple.Status
HTTPurple.Utils
HTTPurple.Validation
HTTPurple.Version
Dependencies