Есть ли передовая практика или распространенная реализация для использования условных запросов If-Modified-Since / Last-Modified для коллекций ? Я реализовал следующий пример в конечной точке GET по идентификатору:
@RequestMapping(method = { RequestMethod.GET }, value = "/myEntities/{id}")
public ResponseEntity<MyEntity> getById(HttpServletRequest request, @PathVariable("id") final UUID id)
throws Exception {
final String ifNotModified = request.getHeader(HttpHeaders.IF_MODIFIED_SINCE);
final MyEntity response = myEntityService.getById(id);
if (StringUtils.hasText(ifNotModified)
&& OffsetDateTime.parse(ifNotModified, AppConstants.formatter).isEqual(response.getUpdatedTime())) {
return ResponseEntity.status(HttpStatus.SC_NOT_MODIFIED)
.cacheControl(CacheControl.maxAge(0, TimeUnit.SECONDS).cachePrivate().mustRevalidate()).build();
}
return ResponseEntity.ok()
.cacheControl(CacheControl.maxAge(0, TimeUnit.SECONDS).cachePrivate().mustRevalidate())
.lastModified(response.getUpdatedTime().toInstant().toEpochMilli()).body(response);
}
Примечание. Не обращайте внимания на политику управления кэшем.
Если я хочу реализовать конечную точку GET ALL (возвращающую List) для того же ресурса и гипотетически несвязанный размер ответа, как бы это выглядело? Является ли обычной практикой применение этого механизма в коллекциях?