Simple, fast, minimalist web framework for OCaml/ReasonML built on httpaf and lwt.
// 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 *)
Pre
1.0.0
the API may be changing a bit. A list of these changes will be kept below.
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 install naboris
"@opam/naboris": "^0.1.3"
(libraries naboris)
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
Any help would be greatly appreciated! 👍
esy install
npm run test
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. |