Library
Module
Module type
Parameter
Class
Class type
Paths describe URIs/URLs: segments separated by slashes (/).
Note that paths can be static (i.e., all the segments of the path are determined in advance) or dynamic (i.e., some segments of the path are actually arguments for the service -- e.g., paths can have the form /user/<user-name>
where <user-name>
is a string encoding of a user identifier).
type 'params t = (unit, 'params) Resto.Path.path
The type for service's paths
A a path
is a path in which some segments encode a value of type a
.
Typically a unit path
is a static path. Also typically, a dynamic path has type (((unit * a) * b) * ..) path
where different segments encode the different components of the tuple (a
, b
, etc.). For example the path /entries-by-date/<year>/<month>/<day>
may be described as a (((unit * int) * int) * int) path
.
type 'params path = 'params t
val root : unit path
root
is the Nil
of path construction.
add_suffix p s
is a path in which s
has been appended to the sequence of segments described by p
.
add_arg p a
is a path in which a segment representing a value of type a
has been appended to the sequence of segments described by p
.
This is intended for use by services with parameters. Specifically, a service that is parametrized over a value of type a
is attached to a path that includes a argument for a value of type a
. When the service is called, the argument is encoded as by the client/decoded by the server, using the constructor/destructor of the argument.