【问题标题】:Spring boot2 path variable validationSpring boot2 路径变量验证
【发布时间】:2021-06-06 12:42:39
【问题描述】:

我正在使用 spring boot 来创建休息服务。我需要验证传递的参数。我有如下服务,

@GetMapping(value="/employee/{Id}")
public EmployeeDTO getEmployeeDetails(@PathVariable String Id) {
    ...
}

如果 Id 没有传入 url,我需要抛出错误。就像“请求中缺少 ID”。我能够使用以下实现,

@GetMapping(value={"/employee", "/employee/{Id}"})
public EmployeeDTO getEmployeeDetails(@PathVariable String Id) {
    ...
}

并在用@ControllerAdvise注解的ExceptionHandler中处理了MissingPathVariableException。

但我想知道这是正确的检查方法吗?

【问题讨论】:

    标签: spring-boot rest spring-boot-2


    【解决方案1】:

    您可以使用@ControllerAdvise 来处理执行实际代码时产生的异常。

    对于路径变量验证,您可以使用spring-boot-starter-validation

    添加这个maven依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    

    那么您的控制器将如下所示:

    @GetMapping(value={"/employee", "/employee/{Id}"})
    public EmployeeDTO getEmployeeDetails(
        @NotBlank(message = "Missing Id in request")
        @PathVariable String Id) {
        ...
    }
    

    我建议您阅读以下内容:Validating Form Input

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 2015-03-15
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多