[英]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.