在我的请求体中,我以不同的方式传递参数进行验证。
{
“name” : []
}
字符串
这里的操作正在执行,我想限制我的自定义错误消息。
在这里,我得到了400个错误的请求,所以如何处理这个正确的错误消息。
在我的控制器里,
if (myRequestResult.getName() == null || myRequestResult.getName().isEmpty()) {
throw exceiption ()
}else{
myService.setName(myRequestResult.getName())
}
型
这是工作正常,但现在我删除,并使用验证器注解。
@Data
public class MyResultRequest {
@NotEmpty(message = "List of name must not be empty")
@Size(min = 1, message = "List of name must have at least one element")
private List<String> name;
}
型
这是我的restcontroller
@Log4j2
@RestController(value = "apiMyController")
@RequestMapping(path = "/api/v1/someRandomeURL")
@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
public class ExecutionResultsController {
@RequestMapping(method = RequestMethod.POST)
public ExecutionResultDTO create(@RequestBody MyRequestResult myRequestResult) throws Exception {
myService.setName(myRequestResult.getName());
}
}
型
有人能告诉我如何解决这个问题吗?
2条答案
按热度按时间7cjasjjr1#
@seenukarthi实际上是正确的。您必须在端点上使用
@Valid
来验证请求体。**注意:**验证错误在错误响应中不可见。
错误将显示在控制台日志中。示例:
字符串
请仔细查看日志,会有的
现在,如果你想捕获请求体上发生的验证错误并将其包含到响应中,那么你必须使用
org.springframework.validation.BindingResult
。让我用一个例子来说明:
更新
ExecutionResultDTO
,以便在可能的情况下也列出错误:型
更新了我用于测试的控制器:
型
Postman :
对于不正确的数据:
x1c 0d1x的数据
对于正确的数据:
的
相应地改变逻辑。这只是一个例子。
uwopmtnx2#
您需要将
@javax.validation.Valid
添加到rest控制器的参数中以启用验证。所以你的休息控制器会像这样
字符串