Ok, so I am building a REST API in Common Lisp, seriously this time!
Instead of struggling with a half-documented “framework”, all I need is:
- hunchentoot
- easy-routes
- postmodern
- com.inuoe.jzon
All of these are well documented.
Hunchentoot is mature and powerful. It took me a moment to discover how Context is realized via subclassing the request object.
With “easy-routes” defining request handlers and middleware (decorators) is straightforward.
Postmodern feels a bit bloated but provides full support for advanced PostgreSQL data types and connection pools (they should remove JSON serialization and ORM-like features to reduce dependencies).
I’m generating JSON response data directly in Postgres via to_json
. No need to re-serialize it in the API.
Dev experience is great!
- No need to re-compile/restart for every change.
- Even though Common Lisp is not statically typed, SBCL is very good in deriving types and shouting at you in case you get things wrong.
#commonlisp