Проверка Spring REST API
В Spring MVC просто аннотируйте@Valid
на@RequestBody
, чтобы запустить процесс проверки.
Note
Полный исходный код см. здесь -Spring Boot Ajax example
P.S Tested with Spring Boot 1.5.1.RELEASE (Spring 4.3.6.RELEASE)
1. Проверка JSR 303
Добавьте аннотации JSR303 к компоненту.
package com.example.model; import org.hibernate.validator.constraints.NotBlank; public class SearchCriteria { @NotBlank(message = "username can't empty!") String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
2. @Valid @RequestBody
Spring REST API, второй аргумент объектаErrors
будет содержать детали проверки.
package com.example.controller; import com.example.model.AjaxResponseBody; import com.example.model.SearchCriteria; import com.example.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.validation.Errors; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; import java.util.stream.Collectors; @RestController public class SearchController { @PostMapping("/api/search") public ResponseEntity> search( @Valid @RequestBody SearchCriteria search, Errors errors) { Result result = new Result(); //If error, just return a 400 bad request, along with the error message if (errors.hasErrors()) { // get all errors result.setMsg(errors.getAllErrors() .stream() .map(x -> x.getDefaultMessage()) .collect(Collectors.joining(","))); return ResponseEntity.badRequest().body(result); } Listusers = //get users... if (users.isEmpty()) { result.setMsg("no user found!"); } else { result.setMsg("success"); } result.setResult(users); return ResponseEntity.ok(result); } }