@RequestParam
을 써서 요청 정보들을 받았는데, 요청이 많으면 많을수록 컨트롤러에서 @RequestParam
애너테이션을 계속 사용해서 요청정보들을 받아야 할 것이다. 차라리 하나의 객체로 전달을 받으면 더욱 간결해질 것인데, 지금 언급한 하나의 객체의 역할을 하는 것이 바로 DTO이다.각 DTO 클래스는 멤버 변수에 해당하는 getter메서드가 반드시 있어야 한다.
DTO는 API계층에서 클라이언트의 RequestBody를 전달받고, 클라이언트에게 되돌려 줄 응답데이터를 담는 역할을 한다.
전달받긴하는데, JSON으로 들어온 요청을 Mapper에 의해서 JSON데이터를 DTO형태로 바꿔준다.
Mapper는 참고로 Reflection API를 사용해서 데이터를 변환해준다.
POST 실험을 했는데, 분명히 잘 들어가야 되는데, 안되더라.. 이유가 뭐지하고 보다가, PostDto 클래스의 Generate시에 당연히 나는 getter를 클릭했는데, 보니깐 반환타입은
void
였고, void는..Setter
를 클릭한 거였다... Getter로 바꾸니 Post 잘 된다.
위의 에러메세지중 representation
이란 단어가 나오는데, 저기가 스프링의 정석에서 클라이언트의 요청을 받는 계층이라고 했다. 즉, API계층이란 말이다.
여튼, 요청을 제대로 못 받는 걸 알았고, postDto를 가보니;;; Setter로 되있었다니.... 아!!...!!^&^ 여튼..그렇다 그래서 바로 Getter로 다시 바꾸니 되었다...
애플리케이션 실행과 post요청 잘 들어간 것들이다...
확인을
잘하자...
build.gradle 파일의 dependencies
탭에
implementation 'org.springframework.boot:spring-boot-starter-validation'
위 코드를 추가한다.
유효성 검증에 필요한 애너테이션을 만들 수도 있다.
@Constraint(validatedBy = {~~Validator.class})
를 설정해준다.ConstraintValidator
인터페이스를 이용해서 구현해준다.
커밋ㅇ