是否可以向路径变量添加一些自定义验证消息?
我有一些 GET
@GetMapping("/v2/tw/{id}")
public TwDto getTw(Authentication auth, @PathVariable Long id) {
的情况下/v2/tw/someString
我想捕获错误并添加一些自定义错误消息,例如“无效的 tw ID”...如何做到这一点?在ControllerAdvice
添加一些ExceptionHandler
?
对于您的特定用例,您可以使用@ExceptionHandler
在控制器或在@ControllerAdvice
类如下所示。例如,我为此返回 NOT_FOUND 错误。
@ExceptionHandler({MethodArgumentTypeMismatchException.class})
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "this is the reason")
public void handle() {
}
您可能看不到reason
在实际的错误响应中,直到您启用
server:
error:
include-message: always
如果您认为您的@ExceptionHandler
仅在控制器类中需要,您可以将该方法保留在控制器内。或者,您可以创建一个@ControllerAdvice
类并将方法放在那里,以便您可以在应用程序中的多个控制器之间重用。
但是,如果您想要更复杂的验证,我建议保留id
类型为 String,然后手动转换为 Long 并执行验证。这样做您可以抛出自己的 RuntimeException 并处理不同的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)