refactor and improve

- [x] format checking for request parameters (check: [noir-validation][] and [liberator][])
- [x] data validation

[noir-validation]: https://github.com/noir-clojure/lib-noir/blob/master/src/noir/validation.clj
[liberator]: http://clojure-liberator.github.io/liberator/