servant-0.11: A family of combinators for defining webservices APIs

Safe Haskell | Safe
Language | Haskell2010

Servant.API.QueryParam

Synopsis

- data QueryFlag sym
- data QueryParam sym a
- data QueryParams sym a

# Documentation

data QueryFlag sym #

Lookup a potentially value-less query string parameter with boolean semantics. If the param `sym` is there without any value, or if it's there with value "true" or "1", it's interpreted as `True`. Otherwise, it's interpreted as `False`.

Example:

    >>> -- /books?published
    >>> type MyApi = "books" :> QueryFlag "published" :> Get '[JSON] [Book]

Instances

(KnownSymbol sym, HasLink k sub) => HasLink * ((:>) k * (QueryFlag sym) sub) # |
Associated Types type MkLink ((:>) k * (QueryFlag sym) sub) (endpoint :: (:>) k * (QueryFlag sym) sub) :: * # Methods toLink :: Proxy ((k :> *) (QueryFlag sym) sub) endpoint -> Link -> MkLink ((k :> *) (QueryFlag sym) sub) endpoint #
type MkLink * ((:>) k * (QueryFlag sym) sub) # |
type MkLink * ((:>) k * (QueryFlag sym) sub) = Bool -> MkLink k sub

data QueryParam sym a #

Lookup the value associated to the `sym` query string parameter and try to extract it as a value of type `a`.

Example:

    >>> -- /books?author=<author name>
    >>> type MyApi = "books" :> QueryParam "author" Text :> Get '[JSON] [Book]

Instances

(KnownSymbol sym, ToHttpApiData v, HasLink k sub) => HasLink * ((:>) k * (QueryParam * sym v) sub) # |
Associated Types type MkLink ((:>) k * (QueryParam * sym v) sub) (endpoint :: (:>) k * (QueryParam * sym v) sub) :: * # Methods toLink :: Proxy ((k :> *) (QueryParam * sym v) sub) endpoint -> Link -> MkLink ((k :> *) (QueryParam * sym v) sub) endpoint #
type MkLink * ((:>) k * (QueryParam * sym v) sub) # |
type MkLink * ((:>) k * (QueryParam * sym v) sub) = Maybe v -> MkLink k sub

data QueryParams sym a #

Lookup the values associated to the `sym` query string parameter and try to extract it as a value of type `[a]`. This is typically meant to support query string parameters of the form `param[]=val1&param[]=val2` and so on. Note that servant doesn't actually require the `[]`s and will fetch the values just fine with `param=val1&param=val2`, too.

Example:

    >>> -- /books?authors[]=<author1>&authors[]=<author2>&...
    >>> type MyApi = "books" :> QueryParams "authors" Text :> Get '[JSON] [Book]

Instances

(KnownSymbol sym, ToHttpApiData v, HasLink k sub) => HasLink * ((:>) k * (QueryParams * sym v) sub) # |
Associated Types type MkLink ((:>) k * (QueryParams * sym v) sub) (endpoint :: (:>) k * (QueryParams * sym v) sub) :: * # Methods toLink :: Proxy ((k :> *) (QueryParams * sym v) sub) endpoint -> Link -> MkLink ((k :> *) (QueryParams * sym v) sub) endpoint #
type MkLink * ((:>) k * (QueryParams * sym v) sub) # |
type MkLink * ((:>) k * (QueryParams * sym v) sub) = [v] -> MkLink k sub