🪁 A simple, type-safe http server for PureScript
Go to file
2022-06-11 17:52:14 +01:00
.github/workflows Simplify ci to fasten build times 2022-05-25 20:30:05 +01:00
docs Update changelog and docs 2022-06-11 17:46:42 +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 Update bower.json 2022-06-10 18:55:48 +01:00
CHANGELOG.md Update changelog and docs 2022-06-11 17:46:42 +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 Update readme 2022-06-11 17:47:45 +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 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
  • 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.