[det]http_dispatch(Request)Dispatch a Request using http_handler/3
registrations. It performs the following steps:
- Find a matching handler based on the
path
member of Request.
If multiple handlers match due to the prefix
option or
variables in path segments (see http_handler/3),
the longest specification is used. If multiple specifications of equal
length match the one with the highest priority is used.
- Check that the handler matches the
method
member of the
Request or throw permission_error(http_method, Method, Location)
- Expand the request using expansion hooks registered by
http_request_expansion/3. This may add
fields to the request, such the authenticated user, parsed parameters,
etc. The hooks may also throw exceptions, notably using http_redirect/3
or by throwing
http_reply(Term, ExtraHeader, Context)
exceptions.
- Extract possible fields from the Request using e.g.
method(Method)
as one of the options.
- Call the registered closure, optionally spawning the request
to a new thread or enforcing a time limit.