If you use ReqBody in one of the endpoints for your API,
this automatically requires your server-side handler to be a function
that takes an argument of the type specified by ReqBody.
The Content-Type header is inspected, and the list provided is used to
attempt deserialization. If the request does not have a Content-Type
header, it is treated as application/octet-stream (as specified in
RFC7231.
This lets servant worry about extracting it from the request and turning
it into a value of the type you specify.

If you use QueryParam "author" Text in one of the endpoints for your API,
this automatically requires your server-side handler to be a function
that takes an argument of type MaybeText.

This lets servant worry about looking it up in the query string
and turning it into a value of the type you specify, enclosed
in Maybe, because it may not be there and servant would then
hand you Nothing.

You can control how it'll be converted from Text to your type
by simply providing an instance of FromHttpApiData for your type.

If you use Header in one of the endpoints for your API,
this automatically requires your server-side handler to be a function
that takes an argument of the type specified by Header.
This lets servant worry about extracting it from the request and turning
it into a value of the type you specify.

If you use Capture in one of the endpoints for your API,
this automatically requires your server-side handler to be a function
that takes an argument of the type specified by the Capture.
This lets servant worry about getting it from the URL and turning
it into a value of the type you specify.

You can control how it'll be converted from Text to your type
by simply providing an instance of FromHttpApiData for your type.

If you use CaptureAll in one of the endpoints for your API,
this automatically requires your server-side handler to be a
function that takes an argument of a list of the type specified by
the CaptureAll. This lets servant worry about getting values from
the URL and turning them into values of the type you specify.

You can control how they'll be converted from Text to your type
by simply providing an instance of FromHttpApiData for your type.