Routing is the process of recognizing an incoming request, and matching it to a particular behavior.
A route identifies a particular request path and request method (such as :get or :post) and identifies
corresponding behavior in terms of a handler function, or a list of interceptors to execute.
Route specifications are the data values that spell out the possible routes.
Routers are built from route specifications, and apply a specific strategy to match incoming requests
to the provided routes; there are a few different built-in Router implementations, with different limitations
and trade-offs.
The routing interceptor builds on a router to dispatch incoming requests to routes
defined by the route specification. It identifies the route matching the incoming request
and queues up route-specific interceptors to handle the request.
Generally, all of this is automatic; an application provides a route specification in the :io.pedestal.http/route key
of the service-map.adoc (and perhaps a value for :io.pedestal.http/router) and a routing
interceptor is automatically created.