在使用Java編寫REST接口時,參數校驗是一個必需的步驟,以確保傳遞給接口的數據是有效和可用的。而JSON是REST接口中最常用的參數類型之一,因此校驗JSON參數成為我們必須掌握的技能之一。
我們使用Java的Bean Validation API來校驗JSON參數。它可以在Java類中定義限制條件,并在參數傳遞時自動執行校驗。以下是一個簡單的Java類的示例,其中定義了一些限制條件:
public class User { @NotNull(message = "用戶名不能為空") private String username; @Pattern(regexp = "[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,6}$", message = "郵箱格式不正確") private String email; @Size(min = 6, max = 20, message = "密碼長度必須在6到20個字符之間") private String password; // ... }
上面的代碼使用了@NotNull,@Pattern和@Size注解。我們可以通過這些注解來定義限制條件,例如非空,正則表達式和字符串長度。
要在REST接口中使用這個類,我們需要在類的屬性上添加@RequestBody注解。此注解告訴Spring MVC框架,將接收到的JSON參數轉換為Java對象。
@RestController public class UserController { @PostMapping("/user") public ResponseEntitycreateUser(@Valid @RequestBody User user) { // 處理用戶創建邏輯... return ResponseEntity.ok("用戶創建成功!"); } }
在上面的代碼中,我們使用了@Valid注解。它告訴Spring MVC框架,執行Bean Validation校驗。
當傳遞無效的JSON參數時,Bean Validation會拋出異常。因此,我們需要使用@ExceptionHandler在REST控制器中處理這些異常。
@RestControllerAdvice public class RestExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity
在上面的代碼中,我們使用@RestControllerAdvice注解來創建一個全局異常處理程序。然后,我們定義了一個handleMethodArgumentNotValid方法來處理MethodArgumentNotValidException異常。在這個方法中,我們首先創建一個包含有關異常的詳細信息的Map,然后將它們附加到響應實體中,以便客戶端能夠了解發生了什么。
總之,使用Java的Bean Validation API校驗REST接口中的JSON參數是一件非常容易的事情。它可以讓我們定義類的屬性上的限制條件,并在接口接收到參數時執行校驗。如果參數無效,我們可以通過全局異常處理程序向客戶端發送錯誤消息。