building HTTP-based applications. ๏ Leverage Kotlin language features. ๏ Based on functional concepts: composition and immutability. ๏ No magic. No reflection. No annotations. ๏ Minimal/no dependencies. ๏ Supports Test-Driven approaches, easily testable outside container.
client/server model ๏ endpoints are HttpHandler functions ๏ modules are HttpHandler functions ๏ servers are HttpHandler functions ๏ clients are HttpHandler functions
unlocks new powers ๏ For application design: ๏ lightweight, functional, no-magic services ๏ simple, extensible, composable abstractions ๏ apps become pure functions which can be easily tested ๏ For testing (which we are obsessive about!): ๏ servers and clients can be interchanged ๏ zero custom testing infrastructure ๏ tests are portable across the pyramid AND technology
2017 ๏ 450 releases, 5.5k commits, 81 contributors ๏ 50 modules, supporting 17 server and serverless backends ๏ Core module is still only 1mb (zero dependencies) ๏ Usage seems to be pan-industry - lots of FS/banking ๏ More recently, uptick in serverless interest
find the entire http4k project quite exemplary in both function and style/form. At first glance my impression was that it must be deficient because the code-base was too small and the style - simple and elegant -- to the point I was skeptical it would actually work in 'the real world'. I have verified to my satisfaction that I was totally wrong. The apparent simplicity is actually elegance -- a direct representative of the overall design architecture. So thank you -- not just for a great library but also an inspiration and example of excellent engineering we could all strive to follow as a model of something done well." - David A. Lee