Service, Controller 작성

[ Controller 생성 ]

요청에 따른 적절한 응답을 보냄

@RequiredArgsConstructor

  • 필드 주입(@Autowired) 대신 사용하는 생성자 주입!

@RequestBody

  • 클라이언트가 전송하는 Json 형태의 HTTP Body 내용을 Java Object로 변환
  • 메세지를 변환하는 과정에서 객체의 기본 생성자를 통해 객체를 생성하고, 내부적으로 Reflection을 사용해 값을 할당 → 기본 생성자는 필요하고 Setter는 필요하지 않은 이유!

@PathVariable

  • URI 경로의 일부를 파라미터로 사용할 때 사용
  • @RequestParam : Query String 에서 값을 가져올 때 사용

@Valid

  • @RequestBody 객체 검증
  • 의존성 implementation 'org.springframework.boot:spring-boot-starter-validation’

[ Service 생성 ]

SaveTodo

  1. 전달받은 requsetDto로 Todo Entity생성
  2. User와 Todo의 중개 Entity인 UserTodo Entity생성
  3. 생성된 Todo에 UserTodo 연결
  4. Todo Entity 저장 → UserTodo 또한 자동으로 저장 됨

[ Controller 테스트 ]

MockMVC

  • 요청을 수행하고 응답을 만들어내는 Servlet API 모조(mock) 객체
  • MockMvc 주입: @SpringBootTest + @AutoConfigureMockMvc
mockMvc.perform(post("/api/todo")
                .content(asJsonString(reqDto))
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON))

        // then
                .andExpect(status().isOk());
  • “/api/todo” 경로로 post 요청을 보냄
  • Content-Type: Json
  • 예상되는 응답 상태(status) OK(200) 설정

좋은 웹페이지 즐겨찾기