Etag - If-Match - Spring Boot - ошибка 412 не работает - PullRequest
0 голосов
/ 05 декабря 2018

Пожалуйста, исправьте, если мое понимание неверно:

Класс обслуживания:

@PutMapping
@Transactional
public ResponseEntity setparty(@RequestBody PartyManager pmObj) {
    repository.setPartyById(pmObj.getName(), pmObj.getPartyid());
    return new ResponseEntity(HttpStatus.OK);
}

@GetMapping("/{id}")
public ResponseEntity<PartyManager> party(@PathVariable Long id) {
    return new ResponseEntity(repository.findById(id), HttpStatus.OK);
}

Класс конфигурации:

@Configuration
public class ETagConfig {
    @Bean
    public Filter shallowEtagHeaderFilter() {
        return new ShallowEtagHeaderFilter();
    }
}

Класс сущности:

@Entity
@Table
public class Manager implements Serializable {

    @Version
    private Long versionid;

    @Id
    private Long managerid;
    private String name;
}

Действия по репликации проблемы:

GET ==> Получил etag -> "0c43f39e5857832ee6049eb99b4320484"

изменил данные и сгенерировал запрос PUT ==> If-Match -> "0c43f39e5857832ee60494" b431016 *

снова изменил данные и сгенерировал запрос PUT ==> If-Match -> "0c43f39e5857832ee6049eb99b4320484" // Предполагается, что этот запрос выдает 412, но не выдает никакой ошибки, просто обновите БД и верните 200 .

Что я делаю не так, пожалуйста, поправьте меня.

Использование Spring Boot 2x, Spring Data Rest (я думаю, в него встроена поддержка ETag)

...