Data Binding, Validation
Data Binding, Validation
Data Binding
@RequestParam@GetMapping("/search") public List<Item> searchItems( @RequestParam(name = "query") String query, @RequestParam(name = "page", required = false, defaultValue = "0") int page, @RequestParam(name = "size", required = false, defaultValue = "10") int size, @RequestParam(name = "sort", required = false, defaultValue = "asc") String sort) { return itemService.search(query, page, size, sort); }@RequestBody@PostMapping("/users") public ResponseEntity<User> createUser(@RequestBody User user) { User createdUser = // Create user return ResponseEntity.status(HttpStatus.CREATED).body(createdUser); }@PathVariable@DeleteMapping("/users/{id}") public ResponseEntity<Void> deleteUser(@PathVariable("id") Long id) { // Delete user return ResponseEntity.noContent().build(); }@RequestHeader@GetMapping("/headerDetails") public String headerDetails(@RequestHeader(name = "User-Agent") String userAgent) { return "User-Agent: " + userAgent; }
Validation
Validating Request Body
@Validwith@RequestBody, and ****Validation Annotation on fields of POJO
class User { @NotNull(message = "Name cannot be null") private String name; } @PostMapping("/users") public ResponseEntity<User> createUser(@Valid @RequestBody User user) { User createdUser = // Create user return ResponseEntity.status(HttpStatus.CREATED).body(createdUser); }Validating Request Parameters, Path Variables, and Request Headers
@Validatedwith@RestController, and Validation Annotation on Request Parameters, Path Variables, or Request Headers
@Validated @RestController public class UserController { @DeleteMapping("/users/{id}") public ResponseEntity<Void> deleteUser(@PathVariable("id") @Min(1) Long id) { // Delete user return ResponseEntity.noContent().build(); } }Validation Annotation
@NotNull@NotBlank@NotEmpty@Min(value)@Max(value)@Email@AssertTrue@AssertFalse@Null@Size(min=val, max=val)@Past@Future