Giter VIP home page Giter VIP logo

purescript-httpurple's Introduction

HTTPurple ๐Ÿช

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.