코드스테이츠 Day42
1. DTO (Data Transfer Object)
@RestController
@RequestMapping("/v1/coffees")
@Validated
public class CoffeeController {
// 1. DTO 클래스 및 유효성 검증을 적용하세요.
@PostMapping
public ResponseEntity postCoffee(@Valid @RequestBody CoffeePostDto coffeePostDto) {
return new ResponseEntity<>(coffeePostDto, HttpStatus.CREATED);
}
// 2. DTO 클래스 및 유효성 검증을 적용하세요.
@PatchMapping("/{coffee-id}")
public ResponseEntity patchCoffee(@PathVariable("coffee-id") @Min(1) long coffeeId,
@Valid @RequestBody CoffeePatchDto coffeePatchDto) {
coffeePatchDto.setCoffeeId(coffeeId);
return new ResponseEntity<>(coffeePatchDto, HttpStatus.OK);
}
}
public class CoffeePatchDto {
private long CoffeeId;
private Optional<@NotBlank String> korName = Optional.empty();
private Optional<@Pattern(regexp = "[a-zA-Z]+(\\s?[a-zA-Z])*",
message = "영문만 가능하며, 워드 사이에 한칸의 공백(스페이스)만 포함 될 수 있습니다.") String> engName = Optional.empty();
private Optional<@Range(min = 100, max = 50000) Integer> price = Optional.empty();
... 이하 생략
package com.codestates.coffee;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {EngNameValidator.class})
public @interface EngNameAnnotation {
String message = "영문 작성해야하며, 공백은 사이에 하나만 가능합니다.";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
package com.codestates.coffee;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class EngNameValidator implements ConstraintValidator<EngNameAnnotation, String> {
@Override
public void initialize(EngNameAnnotation constraintAnnotation) {
ConstraintValidator.super.initialize(constraintAnnotation);
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return (value.replaceAll("[^\\s]","")).length() <2 && ... ;
}
}
<느낀 점>
양심고백(?) 하자면, 지금까지 주말에 공부한 적 한 번도 없다.
그런데 이번 주말은 진짜 해야겠다.
처음으로 평일 저녁에 공부해도 시간이 모자를정도로 양이 너무 많아서 심화 파트를 거의 못 봄. 주말에 심화 파트 공부하자★★★
섹션 3 튜터님 설명 너무 잘해주시고, 컨텐츠도, 세션도 빵빵하다.
실습이 늘어나니까 더 재밌는 것 같다.
댓글을 작성 안하려고 했는데, "양심고백(?) 하자면, 지금까지 주말에 공부한 적 한 번도 없다." 이 말 때문에 댓글을 잠깐 남기게 되네요.ㅎㅎ
이제 주말에도 공부를 하시는게..ㅎㅎ 우선 양이 굉장히 많습니다. 그리고 뒤로 갈수록 점점 어려워집니다.ㅎㅎ 물론 그만큼 재밌긴하지만서도.. ^^;
안하면 정신적으로 힘들어질거에요..ㅎ 잘 하고 계신거 같지만 더 잘 하시라고 댓글을..ㅎㅎ
저도 주말에 열심히 공부하겠습니다. 화이팅 하셔요~