如果我的理解有误,请更正:
@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->“ 0c43f39e5857832ee6049eb99b4320484”
再次更改数据并触发PUT请求==> If-Match->“ 0c43f39e5857832ee6049eb99b4320484” // 该请求应该抛出412,但没有抛出任何错误,只需更新DB并返回200 。
我做错了,请纠正我。
使用Spring Boot 2x和Spring Data Rest(我认为它内置了ETag支持)