контроллер упора пружины, последний измененный в коллекциях - PullRequest
0 голосов
/ 13 ноября 2018

Есть ли передовая практика или распространенная реализация для использования условных запросов 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) для того же ресурса и гипотетически несвязанный размер ответа, как бы это выглядело? Является ли обычной практикой применение этого механизма в коллекциях?

...