Etag-If-Match-Spring Boot-412错误不起作用

时间:2018-12-05 14:25:51

标签: spring-boot spring-data-rest etag

如果我的理解有误,请更正:

服务等级:

@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支持)

0 个答案:

没有答案