我正在使用spring boot来创建rest服务。我需要验证传递的参数。我有一个类似下面的服务,
@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。
但我想知道这是检查的正确方式吗?
发布于 2021-06-06 22:45:45
您可以使用@ControllerAdvise处理在执行实际代码时生成的异常。
对于Path变量验证,您可以使用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
https://stackoverflow.com/questions/67859255
复制相似问题