0

我正在使用 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。

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

4

1 回答 1

0

您可以使用它@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) {
    ...
}

我建议您阅读以下内容:验证表单输入

于 2021-06-06T14:45:45.307 回答