It mainly consists of two parts: route and pattern. The former classifies
the rule so that it only applies to specific controller-action route.
The latter performs the actual formatting and parsing role. The pattern
may have a set of named parameters.