Spring boot2路径变量验证



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

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

如果url中没有传递Id,我需要抛出错误。喜欢";请求中缺少Id";。我能够实现使用以下,

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

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

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

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

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