Library
Module
Module type
Parameter
Class
Class type
Query parameters are the key-value pairs that appear as ?key0=value0&key1=value1&..
at the end of the path in URIs/URLs.
type 'a query = 'a t
val empty : unit query
empty
is for services that expects no query parameters.
The type for key-value pairs that constitute a query. The first type parameter is for whole-query store and the second is for the type of value carried by the field.
field ?descr key arg default get
is a field for the query parameters, i.e., it describes one key-value pair.
The key is given by key
and the value is parsed as specified in arg
or, if absent from the URI suffix, default
.
Finally, get
is for retrieving the value from the whole-query store. More on the whole-query store below.
Queries are constructed by adding fields to an open query and sealing it into a query. This is done using the functions below. Typically, it is done as follow: query c |+ field1 |+ field2 |> seal
As the types require, you must provide the correct argument to the successive building steps. Here is an example:
query (fun timeout shade -> (timeout, shade))
|+ field "timeout" Arg.float 10. (fun (timeout, _) -> timeout)
|+ field "shade" Arg.string "fuchsia" (fun (_, shade) -> shade)
|> seal
The initial query
function takes a whole-query store builder (a function that assemble all the fields into a single store of values), and each field takes a function to recover the value from the whole-query store.
val query : 'b -> ('a, 'b, 'b) open_query
val (|+) :
('a, 'b, 'c -> 'd) open_query ->
('a, 'c) field ->
('a, 'b, 'd) open_query
val seal : ('a, 'b, 'a) open_query -> 'a t