This example shows how Spring Data REST auto-populates response headers for item resources and considers these values when conditional GET
requests are used
If entities use optimistic locking (usually by demarcating a particular property as version property using a store-specific annotation), Spring Data REST will use the value stored in that property to populate the ETag
header for GET
and HEAD
requests to the item resource.
If Spring Data’s auditing capabilities are activated (using @EnableJpaAuditing
in this case), the Last-Modified
header is populated with the value of the last-modified property. See the Customer
domain class for how to mark those.
The response headers can be used to issue conditional GET requests to save bandwidth in case the resource hasn’t changed on the server:
$ curl http://localhost:8080/customers/1 -i -H "If-Modified-Since: Wed, 08 Apr 2015 17:24:20 GMT"
HTTP/1.1 304 Not Modified
$ curl http://localhost:8080/customers/1 -i -H "If-None-Match: 0"
HTTP/1.1 304 Not Modified
Client-side JavaScript that issue cross-origin requests require the server to evaluate cross-origin requests and respond appropriately.
$ curl 'http://localhost:8080/customers/' -i -H 'Origin: http://localhost'
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://localhost
Vary: Origin
Access-Control-Allow-Credentials: true
The sample uses Spring RESTDocs to document the HTTP interaction implemented using the test cases. See WebIntegrationTests.setUp()
for general setup and the individual test methods with their usage of ….andDo(document(…))
.