【问题标题】:Existing client validation in Spring boot?Spring Boot 中的现有客户端验证?
【发布时间】:2020-09-17 15:11:36
【问题描述】:

我正在开发一个 Rest API,我需要使用 CPF 作为密钥来验证客户端在注册时是否已经存在。

这是我在控制器上的 Post 方法:

@PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public ResponseEntity<Client> save(@Valid @RequestBody Client client) {
        return ResponseEntity.ok(this.clientService.save(client));
    }

这是我的客户端类:

@Document
@Data
@AllArgsConstructor
public class Client{

    @Id
    private String id;

    @NotEmpty(message = "Name cannot be empty")
    private String name;

    @CPF
    @Size(min = 0, max = 11)
    private String cpf;

我不知道如何在我的控制器上执行验证。

提前致谢。

【问题讨论】:

  • 已经存在于哪里?在数据库中?
  • 是的,我正在使用 MongoDB。

标签: java spring spring-boot


【解决方案1】:

我不确定这是不是最好的方法,但我的第一个猜测是在定义 DTO 的地方添加一个 @Column(unique=true),这会在 save 期间引发错误。

另一种更长但可能更透明的方法是定义您自己的validator

更新。 您最初没有提到您正在使用 MongoDB。 所以你需要像这样改变你的Client类:

@Document
@Data
@AllArgsConstructor
public class Client{
same as before
....

@CPF
@Indexed(unique=true)
@Size(min = 0, max = 11)
private String cpf;

@Indexed(unique=true) 让 MongoDB 知道这个字段必须是唯一的。 而已。确保您在数据库本身中也有索引。

【讨论】:

  • 是否可以直接在控制器的Post方法中?使用 CPF 作为键在存储库中进行查询。
猜你喜欢
  • 2015-06-20
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2015-08-26
  • 2022-11-28
  • 2013-07-20
相关资源
最近更新 更多