This list is not currently intended to be all-encompassing - it will document major and breaking API changes with their rationale when appropriate:
- Fixed Hamkrest matchers to be on HttpMessage and not Http Request.
- Default body Content Negotiation strategy changed to None
- Converted Content-Negotiation strategy from an Enum to an interface, so that users can define their own strategies. We also now check encoding so there are 4-built in strategies to choose from: Strict, StrictNoDirective, NonStrict and None.
- Fixed #31 - Matching of segments in URIs is done after URLs are decoded, which results in not capturing encoded slashes in the path segments.
- Fixed #30 - CachingClasspath template ResourceLoader not working with non-root packages.
- Fixed #29 - webdriver submission of text area.
- Http clients now use a new instance of the default for each instantiation. Previously there was a shared instance.
- Add regex body type for parsing values out of bodies, and "None" option for content negotiation.
- Fix AWS request signing for requests containing empty path
- Fix AWS request signing for requests containing path with special characters
- Added support for newRequest() in new
- Add support for unlimited nesting for
routes()blocks. Removed the raw
Routeobject, which can be replaced with
- As part of above, rejigged route setup logic. Deprecated old routing structure, so now
"/path" to GET bindis
"/path" bind GET to. To fix deprecation, simply switch the calls to "to" and "bind" in routing setup.
- Rename of
- Added missing eclectic HTTP method. :)
- Added GZip filters to
http4k-coreto zip request and response bodies.
- Improved messages for
http4k-testing-hamkrestwhich contains a set of Hamkrest matchers for Http4k objects.
- More features for
http4k-testing-webdriver. Cookie support added.
- More features for
http4k-testing-webdriver. We now support Form entry and submission.
- More features for
http4k-testing-webdrivermodule, an ultralight Selenium WebDriver for http4k apps
- Fix #26 - GenerateDataClasses does not recurse into nested object trees
- Fix filter application on GroupRoutingHttpHandler to apply the filter when it is applied with
- Fix static routes not defaulting to index.html when in root context
SunHttpserver implementation (for development use only)
- Fix cookie parsing when value contains '='
- Add method to set form values in the request
- Added PURGE HTTP method as it's used commonly by various caches.
- Repackage AWS classes for consistency with rest of project
- Alter AWS Auth filter creation. Now use
- Add AWS module
- Newly created Zipkin traces are now populated onto incoming request in ServerFilters.
- Slight tweak to GSON auto-marshalling to allow for use of raw Arrays with auto-marshalling
- Make Route a Router so we can nest them together.
- Remove excess "charset" from headers in Undertow.
bind()in routing for clarity.
- Fix for #24 - UriTemplate captures query parameters when the trailing path parameter is a regex.
- Added GSON full-auto functions to convert arbitary objects to/from JSON.
- Fix #23. Contract now supports multi-part URL params (for hardcoded parts)
- Fix #22. Uri template does not parse out correct path params when URL starts with a path part.
- toString() implementations to aid debugging
- Readded missing default parameter for
- Breaking: Inversion of routing API.
GET to "/someUri"is now
"/someUri" to GETfor consistency across the entire API.
- Reimplementation of
http4k-contractAPI to match main routing API. Contracts are now nestable.
- Fix Filters being applied twice in
- More work on
http4k-contractrouting to be mounted in the same way as other
- Filters are now applied consistently to all Routers
- Tweak to DSL for defining StaticRouters
- Fix for #18: FollowRedirect will now work if location header includes charset information.
- New DSL for defining StaticRouters
- Merged StaticContent and StaticRouter and repackage of contract API into other packages
- Extend fix for #17 to request
- Fix for #17. Cookie can now parse a cookie without attributes and ending in semicolon.
- Added nestable Routers.
- Merging of Modules and Routers.
Routeris the new
ContractRouter, so rename in code will be required.
- Fix for #15. OkHttp client handling of POSTs with no body.
- Can add custom mime types to Static Content
- GenerateDataClasses is capable of more complex object graphs
HttpHandler.asServerin favour of
HttpHandler.startServerto avoid confusion.
- Netty sets content-length header.
- Fix for #12. Undertow not constructing response correctly.
- New module with Undertow.io support
- Jackson implementation now ignores unknown properties in incoming messages
- Netty implementation tidied up
- Fix for #11. Netty implementation returns incorrect status codes.
- Add synonym methods for Lenses to aid readability. We now have
invoke(IN)/extract(IN)and `invoke(IN, TARGET)/inject(IN, TARGET)
http4k-contracts: Add option to change the route of the module description route
http4k-contracts: Fix for contract module description routes not being authenticated via security filter
Swaggermodule rendering with JSON schema models for messages.
nonEmptyString()lens type to all request parts.
- General rework
- Further work on Path Lenses. They are now fully supported and consistent for both simple and contract routing scenarios.
- Path lenses are now bidirectional, so can be used to populate requests as well as bodies an headers etc.
- Routes can now create shell Requests for themselves, using
- Body is now non-nullable (use
- Rename methods
BodyLensAPI for consistency and clarity.
to()' binding method is nowof().
- New client module:
- Added option for Body content-negotiation to be strict or non-strict (the default). Always be strict in what you send, relaxed in what you will accept. :)
- Add various filters, including
GenerateDataClassesso you can generate Kotlin data classes from JSON messages.
- Added CORs support
- Added auto() to Jackson, so you can auto convert body objects into and out of Requests/Responses
- Added CachingFilters
- Removed static factory methods for Request/Response. They were confusing/incomplete and users can easily recreate them via extension functions.
- Add Request/Response message parsers.
- Turn Body into ByteBuffer wrapper rather than typealias. That should make .toString() behave as most people would expected.
- Removed non-mandatory parameters from Request and Response constructors. This is aid API clarity. and force users to use the API methods for properly constructing the objects.
- Regex Lens added.
- Initial major release.