You can guess it from the title : this new release is all about HTTP Caching! HTTP Caching is a fundamental part of any web framework and was obviously a required step before Spincast 1.0.0.
Many frameworks only manage a very little part of the HTTP specification
regarding caching. In general, they limit their support to GET
requests by returning a 304 - Not Modified
response
instead of the requested resource if this resource hasn't changed, and they validate this by hashing the generated resource and setting the result
as an ETag
header. This is useful in some cases, but is in fact very limited... HTTP caching is way more sophisticated than this!
At the core of HTTP Caching management using Spincast, there is a new
request context add-on : "httpHeaders()"
. This add-on helps to create very compliant REST
endpoints.
Most of the "freshness" headers are managed : If-Match
, If-None-Match
,
If-Modified-Since
and If-Unmodified-Since
. In the other direction, the add-on helps to send
Cache-Control
, ETag
and Last-Modified
headers. It is also possible to send
"no cache" headers to tell a client that it should never cache the resource, at all. Some of those cache headers
can also be specified on the routes
, directly.
Finally, a Cache Busting
mechanism has been added. By adding a special code to the URL of a resource, you
can easily invalidate the cached versions clients may have of it. Read more about it
here.
We gave the website a small makeover! A cool presentation of Spincast and its features has been added to the home page. We also added a new section: Demos / Tutorials.
Finally, we implemented redirection rules. You can now easily specify that a route must be redirected to another one. This is useful, for example, when you change the URL of a resource but don't want the existing links to break.
There is a new section in the documentation about testing your application using Spincast.
Spincast testing is first and foremost about using a Guice context to run the tests. We developed a custom JUnit runner to make this process very easy. This allows any dependency you need to be injected into your test classes.
Even cooler (in our opinion!), have a look the Integration test example to see how Spincast testing utilities can help you run tests on your actual application. No mocks, no simulation. This approach leads to very trustworthy tests since they are run on your real application, and not on a version where many components have been mocked.
We are very happy to announce that WebSockets
support has been added to Spincast.
It took a lot of work but the result is rewarding! This is a huge step toward Spincast 1.0.0.
Not only does Spincast now supports WebSockets server-side, but we also developed a new version of our HTTP Client, also with WebSockets support. If you need a very easy to use HTTP and WebSocket Java client, look no further! The popular Apache HttpClient doesn't support WebSockets yet.
Finally, we cannot release this version without a big "thank you!" to the folks at Undertow: our WebSockets implementation is based on a lot of code from them!
We added a way to easily protect some parts of your application with
HTTP Authentication
. A section about this topic has
been added to the documentation.
The HTTP Client plugin has also been updated
so you can specify a username/password when using the HTTP client to make a request to a resource protected by
HTTP Authentication
.
Finally, we also updated the Pebble plugin so you can add an extension. This allows you to add custom filters, functions, and more to the default templating engine. More information about extensions on Pebble website.