Module Http.Query

URI query and application/x-www-form-urlencoded codec.

Encodes and decodes according to the whatwg URL standard.


type t

The type for queries as key-values maps. Both keys and values are properly decoded. Note that keys can map to multiple values.

val empty : t

empty is the empty key-values map.

val mem : string -> t -> bool

mem k q is true iff key k is bound in q.

val def : string -> string -> t -> t

def k v q is q with k bound only to value v.

val add : string -> string -> t -> t

add k v q is q with value v appended to k's values (or set if there was no binding for k).

val undef : string -> t -> t

undef k q is q with k unbound.

val find : string -> t -> string option

find k q is the value of k's first binding in q, if any.

val find_all : string -> t -> string list

find_all k q are all the values bound to k or the empty list if k is unbound.

val fold : (string -> string -> 'a -> 'a) -> t -> 'a -> 'a

fold f q acc folds over all the key-value bindings. For keys with multiple values folds over them in the same order as find_all.

val keep_only_first : t -> t

keep_only_first q is q with only the first value kept in bindings with multiple values.


val decode : string -> t

decode s decodes the application/x-www-form-urlencoded s to a query. If a key is defined more than once, the first definition is returned by find and the left-to-right order preserved by find_all's list. The input string is not checked for UTF-8 validity.

val encode : t -> string

encode q encodes q to an application/x-www-form-urlencoded string.

val pp : Stdlib.Format.formatter -> t -> unit

pp is an unspecified formatter for queries.