[英]How to validate request parameters in Spring REST controller
我正在开发Spring REST应用程序。
此应用程序只有REST控制器,没有视图部分。
我想知道如何验证@RequestParam
例如
@RequestMapping(value = "", params = "from", method = RequestMethod.GET)
public List<MealReadingDTO> getAllMealReadingsAfter(@RequestParam(name = "from", required = true) Date fromDate) {
......
......
}
在上面的示例中,我的目标是验证Date
。 假设有人传递了一个无效的值,那么我应该能够处理这种情况。
现在,它的给予与例外状态为500
。
聚苯乙烯
我的问题不只是关于Date
验证。
假设有一个boolean
参数,并且有人错误地将tru
传递给true
而不是true
,那么我也应该能够处理这种情况。
提前致谢 :)
Spring将失败,并显示500
状态代码,因为它无法解析该值。
请求处理的阶段为:
@Validated
则验证值 在您的情况下,流在parse(3)阶段失败。
您很可能会收到BindException
。 您可以通过为控制器提供异常处理程序来处理这些情况。
@ControllerAdvice
public class ControllerExceptionHandler {
@ExceptionHandler(BindException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public YourErrorObject handleBindException(BindException e) {
// the details which field binding went wrong are in the
// exception object.
return yourCustomErrorData;
}
}
否则,当解析无法按预期运行时(尤其是带有Date
的麻烦),您可能要添加自定义映射器/序列化器。
很可能您必须配置Jackson,因为该软件包负责序列化/反序列化值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.