[英]Spring Boot validating request parameters
我正在嘗試學習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的請求參數的最佳實踐是什么?
這取決於您要執行的驗證。
一種方法是在參數本身上使用驗證注釋。
例如, @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
批注以確保op
的實際值的長度分別為> 0或修剪長度> 0。
正如Cristian Colorado在下面的評論中指出的那樣,如果num1
或num2
都不是有效的double值,則Spring將自動通過驗證(或端點匹配)。
如您所知 ,您只想驗證Number
@NumberFormat批注。 @NumberFormat批注適用於java.lang.Number的子類(整數,浮點數,雙精度,BigDecimal等)
@NumberFormat(style=Style.NUMBER)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.