마틴 파울러(Martin Fowler)가 ‘Patterns of Enterprise Application Architecture’ 라는 책에서 처음 소개한 엔터프라이즈 애플리케이션 아키텍처 패턴의 하나
데이터를 받고 보내기위한 객체
필요성
@PostMapping("/api/products")
public Product createProduct(@RequestBody ProductRequestDto requestDto) {
// 대략적인 코드
return new ResponseEntity<>(requestDto, HttpStatus.OK);
}
유효성 검증 라이브러리 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
...
...
}
예시 코드
@Getter
@Setter
public class CoffeePatchDto {
private long coffeeId;
@NotSpace(message = "커피명(한글)은 공백이 아니어야 합니다.")
private String korName;
@Pattern(regexp = "^([A-Za-z])(\\s?[A-Za-z])*$", message = "커피명(영문)은 영문이어야 합니다. 예) Cafe Latte")
private String engName;
private Optional<@Range(min= 100, max= 50000) Integer> price = Optional.empty();
}
@Validated
public class CoffeeController {
@PatchMapping("/{coffee-id}")
public ResponseEntity patchCoffee(
@PathVariable("coffee-id") @Positive long coffeeId,
@Valid @RequestBody CoffeePatchDto coffeePatchDto) {
coffeePatchDto.setCoffeeId(coffeeId);
return new ResponseEntity<>(coffeePatchDto, HttpStatus.OK);
}
}
@Valid
@Validated
데이터 검증 어노테이션