Move the caching middleware to only the API.
Add helpers and breakout api into version file.
Add default format (JSON) if one is not specified.
Refactor and actually require parameters strongly.

This is a little more complex syntax wise but it strongly requires the
parameters to be Strings (where proper).