# 이벤트 생성 API 개발-1
1. Spring Rest API 기본 세팅
2. Event 도메인 구현
- Builder를 사용하면 손쉽게 Event 객체를 만들 수 있음.
- Builder를 추가하면 기본생성자는 추가되지 않음.
- public이 아니기 때문에 다른 패키지에서 사용 못함.
3. Event 생성 API 구현 : 201 응답 받기
- ResponseEntity
- 응답 코드, 헤더, 본문 모두 다루기 편한 API
- Location URI
- HATEOS가 제공하는 linkTo(), methodOn() 사용
- 객체를 JSON으로 반환
4. Event 생성 API 구현 : EventRepository 구현
- JpaRepository 상속 받아 만들기
- Enum을 JPA 맵핑시 주의할 것
- @Enumerated(EnumType.STRING)
- EventStatus
- Enum의 순서가 바뀌면 데이터가 완전히 꼬일 수 있기 때문에
- ORDINAL보다 STRING으로 설정해 주는 게 좋음.
- @MockBean
- Mockito를 사용해서 mock 객체를 만들고 빈으로 등록해 줌.
- 주의할 것, 기존 빈을 테스트용 빈이 대체 한다.
5. Event 생성 API 구현 : 입력값 제한하기
- 입력값 제한
- ModelMapper 의존성 추가
- 어노테이션 분리하기, EventDto
- Event에 너무 많은 어노테이션이 붙어 있음.
- 너무 많아 헷갈려 할 수도 있음.
- Controller 입력 값 수정
- 입력값 수정
- Event event → EventDto eventDto
- Dto Type의 객체를 사용하기 위해서
- Dto Type의 객체를 Event Type의 객체로 바꿔야
- EventRepository를 쓸 수 있음.
- 그러기 위해 'ModelMapper'를 사용함.
6. Event 생성 API 구현 : 입력값 이외에 에러 발생
- ObjectMapper 커스터 마이징
- application.properties
- spring.jackson.deserialization.fail-on-unknown-properties=true
- deserialization(역직렬화)
- serialization(직렬화)
- 여기서는 Json 문자열을 Object 객체로 변환하는 과정이며