-
Notifications
You must be signed in to change notification settings - Fork 152
Concurrency vs Pagination
For paginated responses, concurrency specific metadata should be added to the "metadata" section, inside an "etags" object. That etags object will provide the mapping between the items in the "items" array and the ETag value for each.
With this, the client can directly get the ETag value for a specific item in the "items" array, using its UUID as key.
With that in hand, the client can then issue update requests for the specific items it wants.
Within the metadata object of paginated responses, the following should be included:
- etags: an object containing UUID - ETag tuples (UUID as key)
- the etags object provides the ETag values for all items present in the "items" array
This is necessary to avoid the "N+1" requests problem that we would have if a client wants to update multiple records while he has only the ETag for a collection and not the ETag value for all items in the paginated response.
Note that we've used an object so that the lookup on the client-side can be done in constant time (i.e., O(1))
Check out the Pagination-Example page.
Alternatively, the ETag value can be provided in the representation.
This project is distributed under the terms of the EUPL FOSS license
REST Resources Design Workflow
REST Resources Single items and collections
REST Resources Many to many Relations
REST Resources Relations expansion
HTTP Status Codes Success (2xx)
HTTP Status Codes Redirection (3xx)
HTTP Status Codes Client Error (4xx)
HTTP Status Codes Server Error (5xx)
Pagination Out of range/bounds
Long-running Operations Example
Concurrency vs Delete operation
Caching and conditional requests About
Caching and conditional requests Rules
Caching and conditional requests HTTP headers
Error handling Example with a single error
Error handling Example with multiple errors
Error handling Example with parameters
Error handling Example with additional metadata
Bulk operations HTTP status codes
Bulk operations Resources naming convention
Bulk operations Creation example
Bulk operations Update example
Bulk operations Create and update example
File upload Simple file upload
File upload Simple file upload example
File upload Complex file upload
File upload Complex file upload example
REST Security General recommendations
REST Security Insecure direct object references