12726379bf
Update routing readme
98 lines
2.2 KiB
Markdown
98 lines
2.2 KiB
Markdown
# HTTPurple 🪁
|
|
|
|
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/sigma-andex/purescript-httpurple/main/License)
|
|
|
|
A functional http framework with a focus on type-safety and simplicity.
|
|
|
|
This project was originally forked from the amazing [HTTPure](https://github.com/citizennet/purescript-httpure) http server framework. If you are coming from HTTPure you might want to have a look at the [differences to HTTPure](./docs/Differences.md).
|
|
|
|
## ToC
|
|
1. [Installation](#installation)
|
|
1. [Quick start](#quick-start)
|
|
1. [Documenation](#documentation)
|
|
1. [Examples](#examples)
|
|
1. [Testing](#testing)
|
|
1. [License](#license)
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
spago install httpurple
|
|
```
|
|
|
|
## Quick start
|
|
|
|
```purescript
|
|
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
|
|
|
|
```bash
|
|
➜ 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](https://httpie.io/)
|
|
|
|
```bash
|
|
➜ 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](./docs) for more in-depth guides.
|
|
|
|
## Examples
|
|
|
|
HTTPurple ships with a number of [examples](./docs/Examples). To run an example,
|
|
in the project root, run:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
spago -x test.dhall test
|
|
```
|
|
|
|
## License
|
|
|
|
This is a fork of [HTTPure](https://github.com/citizennet/purescript-httpure), which is licensed under MIT. See the [original license](./LICENSES/httpure.LICENSE). This work is similarly licensed under [MIT](./License).
|