Skip to content

Latest commit

 

History

History
 
 

headers

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Spring Data REST - Headers example

This example shows how Spring Data REST auto-populates response headers for item resources and considers these values when conditional GET requests are used

Auto-populated headers

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.

Conditional GET requests

The response headers can be used to issue conditional GET requests to save bandwidth in case the resource hasn’t changed on the server:

Example 1. Conditional GET using If-Modified-Since
$ 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
Example 2. Conditional GET using If-None-Match
$ curl http://localhost:8080/customers/1 -i -H "If-None-Match: 0"
HTTP/1.1 304 Not Modified

Cross-Origin Resource Sharing

Client-side JavaScript that issue cross-origin requests require the server to evaluate cross-origin requests and respond appropriately.

Example 3. Cross-Origin Request
$ 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

Spring RESTDocs

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(…)).