이 글은 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 책을 참고하여 작성되었습니다.
자바 개발 시 자주 사용하는 Getter/Setter, 기본 생성자 등의 코드들을 annotation을 통해 자동으로 생성해주는 라이브러리이다.
앞서 작성했던 HelloController를 HelloResponseDto를 통해 lombok으로 리팩터링 해보자.
toEntity()
를 통해 필요한 데이터를 entity로 만들 수 있다.HelloControllerDto
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name;
private final int amount;
}
@Getter
: 선언된 모든 필드의 getter 메서드를 생성해준다.@RequiredArgsConstructor
: 선언된 모든 final 필드의 생성자를 생성해준다.HelloController에 helloDto를 반환하는 코드를 추가하자.
HelloController
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name,
@RequestParam("amount") int amount) {
return new HelloResponseDto(name, amount);
}
@RequestParam
: 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션이다. 여기선 name, amount로 넘긴 파라미터를 메서드 파라미터(String name, int amount)에 저장하게된다.
만약 해당 파라미터가 없다면 400 error가 발생한다. 파라미터를 받는 다른 방법으로는 @PathVariable
이 있다.
이제 Dto가 추가된 Controller를 테스트해보자.
HelloControllerTest
@Test
public void helloDto가_리턴된다() throws Exception {
String name = "hello";
int amount = 1000;
mvc.perform(
get("/hello/dto")
.param("name", name)
.param("amount", String.valueOf(amount)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name", is(name)))
.andExpect(jsonPath("$.amount", is(amount)));
}
.param()
: @RequestParam
에 넘겨줄 파라미터를 설정한다. String 이외의 다른 type의 데이터는 String으로 변경하여야한다.jsonpath()
: JSON필드 응답값을 $를 기준으로 필드별로 검증하는 메서드이다.is(obj)
: is(equalTo(obj))
와 같으며 기댓값인 obj와 같은지 검증한다.새로운 API 또한 JSON을 잘 리턴하는 것을 볼 수 있다.