我试图学习Spring Boot并使用一个简单的REST API(我开发了一个简单的计算器)。
我有一个带有@Service
注释的服务类,它具有一个简单的方法
public double calculate(String operation, double num1, double num2) {
...
}
我正在像这样从控制器调用此方法
@GetMapping("/calculate")
public double calculate(@RequestParam(value = "op") String op,
@RequestParam(value = "num1") double num1,
@RequestParam(value = "num2") double num2) {
return calculatorService.calculate(op, num1, num2);
}
我想验证这些参数(num1和num2是否为数字,并且所有参数都不应该为null)。验证Spring Boot的请求参数的最佳实践是什么?
答案 0 :(得分:1)
这取决于您要执行的验证。
一种方法是在参数本身上使用验证注释。
例如@NotNull
,@Min
,@Max
等。这些特定的可以在javax.validation:validation-api
中找到,但是还有很多其他的(您可以构建自己的自己的。)
@GetMapping("/calculate")
public double calculate(@RequestParam(value = "op") @NotNull String op,
@RequestParam(value = "num1") double num1,
@RequestParam(value = "num2") double num2) {
@NotNull
验证将确保op
不为空-您可能要使用@NotEmpty
或@NotBlank
批注以确保{{1 }}的长度分别大于0或修剪的长度大于0。
正如Cristian Colorado在下面的评论中指出的那样,如果op
或num1
都不是有效的double值,Spring将自动通过验证(或端点匹配)。
答案 1 :(得分:0)
正如您所告知的那样,您只想验证Number
@NumberFormat 。 @NumberFormat批注适用于java.lang.Number的子类(整数,浮点数,双精度,BigDecimal等)
@NumberFormat(style=Style.NUMBER)