🪁 A simple, type-safe http server for PureScript
Go to file
2022-06-06 21:18:04 +01:00
.github/workflows Simplify ci to fasten build times 2022-05-25 20:30:05 +01:00
docs Add validator continuation 2022-06-06 21:18:04 +01:00
LICENSES Rename modules and rudimentarily update readme 2022-05-22 12:48:32 +01:00
src Format code 2022-06-06 21:18:04 +01:00
test Fix test 2022-06-06 10:57:13 +01:00
.envrc #153 bind to 0.0.0.0 instead of localhost (#154) 2020-02-26 16:43:38 -08:00
.gitignore Update for PureScript 0.15 (#194) 2022-05-04 14:02:29 -07:00
.tidyrc.json Update for PureScript 0.15 (#194) 2022-05-04 14:02:29 -07:00
bower.json Fix justifill version 2022-05-22 20:08:29 +01:00
CHANGELOG.md Add validator continuation 2022-06-06 21:18:04 +01:00
Contributing.md Rename 'master' branch to 'main' (#173) 2021-03-22 12:34:49 -07:00
History.md Release notes for v0.14.0 2021-12-06 21:03:07 -08:00
License Rename modules and rudimentarily update readme 2022-05-22 12:48:32 +01:00
packages.dhall Upgrade set 2022-05-25 20:47:17 +01:00
Readme.md Add validator continuation 2022-06-06 21:18:04 +01:00
Releasing.md Update Releasing notes 2021-11-20 09:47:43 -08:00
shell.nix Use niv out of nixpkgs (#195) 2022-05-04 23:33:37 -07:00
sources.json Update for PureScript 0.15 (#194) 2022-05-04 14:02:29 -07:00
sources.nix Use niv out of nixpkgs (#195) 2022-05-04 23:33:37 -07:00
spago.dhall Add json request parsing 2022-06-05 20:53:52 +01:00
test.dhall Update packages and spago files 2022-05-22 12:34:27 +01:00

HTTPurple 🪁

License

A functional http framework with a focus on type-safety and simplicity.

This project was originally forked from the amazing HTTPure http server framework. If you are coming from HTTPure you might want to have a look at the differences to HTTPure.

ToC

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

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 more in-depth guides.

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.