naboris

Simple http server
README

Simple, fast, minimalist web framework for OCaml/ReasonML built on httpaf and lwt.

https://naboris.dev


// ReasonML
let serverConfig: Naboris.ServerConfig.t(unit) = Naboris.ServerConfig.create()
  |> Naboris.ServerConfig.setRequestHandler((route, req, res) => switch(Naboris.Route.path(route)) {
    | ["hello"] =>
      res
        |> Naboris.Res.status(200)
        |> Naboris.Res.text(req, "Hello world!");
    | _ =>
      res
        |> Naboris.Res.status(404)
        |> Naboris.Res.text(req, "Resource not found.");
  });

Lwt_main.run(Naboris.listenAndWaitForever(3000, serverConfig));
/* In a browser navigate to http://localhost:3000/hello */
(* OCaml *)
let server_config: unit Naboris.ServerConfig.t = Naboris.ServerConfig.create ()
  |> Naboris.ServerConfig.setRequestHandler(fun route req res ->
    match (Naboris.Route.path route) with
      | ["hello"] ->
        res
          |> Naboris.Res.text req "Hello world!";
      | _ ->
        res
          |> Naboris.Res.status 404
          |> Naboris.Res.text req "Resource not found.";
  ) in


let _ = Lwt_main.run(Naboris.listenAndWaitForever 3000 server_config)
(* In a browser navigate to http://localhost:3000/hello *)

Contents

Installation

Note

Naboris makes heavy use of Lwt. For better performance it is highly recommended (however optional) to also install conf-libev which will configure Lwt to run with the libev scheduler. If you are using esy you will have to install conf-libev using a special package.

conf-libev also requires that the libev be installed. This can usually be done via your package manager.

brew install libev

or

apt install libev-dev
opam
opam install naboris
esy
"@opam/naboris": "^0.1.3"
dune
(libraries naboris)

Scaffolding

For a basic Reason project

git clone git@github.com:shawn-mcginty/naboris-re-scaffold.git
cd naboris-re-scaffold
npm run install
npm run build
npm run start

For a basic OCaml project

git clone git@github.com:shawn-mcginty/naboris-ml-scaffold.git
cd naboris-ml-scaffold
npm run install
npm run build
npm run start

Development

Any help would be greatly appreciated! 👍

To run tests

esy install
npm run test

Breaking Changes

| From | To | Breaking Change |
| --- | --- | --- |
| 0.1.2 | 0.1.3 | secret argument added to all session configuration APIs. |
| 0.1.0 | 0.1.1 | ServerConfig.setSessionGetter changed to ServerConfig.setSessionConfig which also allows ~maxAge and ~sidKey to be passed in optionally. |
| 0.1.0 | 0.1.1 | All RequestHandler.t and Middleware.t now return Lwt.t(Res.t) instead of Lwt.t(unit) |
| 0.1.0 | 0.1.1 | Res.reportError now taxes exn as the first argument to match more closely the rest of the Res API. |

Install
Published
01 Sep 2020
Sources
0.1.3.tar.gz
md5=f7d1c959627f93fdcf9fd0c346edb9c9
sha512=344a03d18170368a3fedcc595f6cc103fe47449a77a9923ab58a7d20d8d291edfda624d27bbfd8dc05d9af33a797064efcbeb52a4f9ea57fa862ebd39b97cfa1
Dependencies
uri
>= "2.2.0"
lwt_ppx
>= "2.0.1"
lwt
>= "5.1.1"
httpaf
>= "0.6.0"
reason
>= "3.4.0"
digestif
>= "0.8.0"
dune
>= "1.6"
base64
>= "3.4.0"
ocaml
>= "4.07"
Reverse Dependencies