package dispatch
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=6c8e77f2960742c16e187355bd1bdaf51ff83c377bf91c6cf4db72de026de5b2
md5=b41da081833337c86c4eda7a2e0b8d26
Description
Dispatch provides a basic mechanism for dispatching a request to a handler based on hierarchical path names conventionally found in URIs. It can be used both for dispatching requests in a server, as well as handing changes to hierarchical fragments in a client-side application.
Published: 24 Jul 2017
README
ocaml-dispatch
ocaml-dispatch provides a basic mechanism for dispatching a request to a handler based on hierarchical path names conventionally found in URIs. It can be used both for dispatching requests in a server, as well as handing changes to hierarchical fragments in a client-side application.
Installation
Install the library and its depenencies via OPAM:
opam install dispatch
Development
To install development versions of the library, pin the package from the root of the repository:
opam pin add .
You can install the latest changes by commiting them to the local git repository and running:
opam upgrade dispatch
For building and running the tests during development, you will need to install the oUnit
package and reconfigure the build process to enable tests:
opam install oUnit
./configure --enable-tests
make && make test
Usage
Dispatch is designed to work with whatever sort of handler you care to use, whether it's synchronous, Lwt-based, or Async-based. Here's a simple example of using the Dispatch.DSL
module to setup routing for a "Hello, World!" server. The example assumes a Server
module and request
type, and that handlers should return strings that will be interpreted as the body of the response.
open Dispatch
let hello_handler keys rest request =
let who = try List.assoc "who" keys with Not_found -> "World" in
Printf.sprintf "Hello, %s!" who
;;
let handler request =
let table = [
"/" , hello_handler
; "/hello/:who/", hello_handler
] in
match DSL.dispatch table request.path with
| Result.Ok handler -> handler request
| Result.Error _ -> "Not found!"
;;
let _ =
Server.start handler
License
BSD3, see LICENSE file for its text.
Dev Dependencies (1)
-
ounit
with-test & >= "1.0.2"
Used by (2)
- dispatch-js
-
webmachine
>= "0.2.3" & < "0.7.0"
Conflicts
None