如何同时检测方法发布中的重复请求

时间:2019-05-26 12:38:24

标签: java spring rest spring-boot

我使用spring boot并使用如下方法创建api:

@RestController
@RequestMapping("/api/products/")
@Api(value = "ProductControllerApi",produces = MediaType.APPLICATION_JSON_VALUE)
public class ProductController {
  @PostMapping
    public ResponseEntity<ProductDto> createProduct(@RequestBody Product product) {
        URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(product.getId()).toUri();
        return ResponseEntity.created(location).body(productService.createProduct(product));
    }
}

但是,当使用设备的用户同时调用我的方法( / api / products / )时,它将使用相同的数据重复创建。示例:使用创建用户时看起来像 {    “名称”:“三星”    “ cost”:“ 26 $” }

它在数据库中创建两个具有相同数据的记录。如何检测来自不同来源的重复数据(例如:用户使用两个手机并以相同的方法同时调用并创建相同的数据)。如何避免这种情况,并且如果它使用相同的数据调用同一时间,则只会向数据库中插入一条记录

1 个答案:

答案 0 :(得分:4)

这对于Spring Boot而言不是问题,而对于您的持久层而言。最佳实践是对数据库表进行建模,以使两个相同的请求将创建完全相同的主键。然后,您的应用程序代码将在事务提交时处理来自DB层的任何异常。