簡體   English   中英

Spring Boot驗證請求參數

[英]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在下面的評論中指出的那樣,如果num1num2都不是有效的double值,則Spring將自動通過驗證(或端點匹配)。

如您所知 ,您只想驗證Number @NumberFormat批注。 @NumberFormat批注適用於java.lang.Number的子類(整數,浮點數,雙精度,BigDecimal等)

@NumberFormat(style=Style.NUMBER)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM