VO 객체 만들기

Json은 JavaScript Object Notation이다.

스트링타입이 아니라 { “code”: 0, “message”: “name” } 라는 json 형태로 리턴하기 위해서 com.eastflag.fullstack 폴더에 domain 패키지를 추가하고 ResultVO 클래스를 추가한다.

여기서 어노테이션은 lombok에서 설정한 라이브러리이다. gradle.build에 Lombok 라이브러리가 추가되었기 때무에 compile 에러는 나지 않지만 실제로 동작하기 위해서는 컴파일시에 Lombok 라이브러리가 idea 개발툴이 빌드할 때 관련 작업을 해줘야 한다. 그래서 Lombok 플러그인과 환경설정이 되어있어야 런타임 오류가 발생하지 않을것이다. 많일 런타임 에러가 발생한다면 1.3.2를 참고하여 lombok 환경설정을 하여야 한다. 환경 설정후 반드시 Rebuild를 눌러서 재 컴파일해야 한다.

@Data는 setter, getter를 자동으로 만들어 준다.

@NoArgsConstructor는 디폴트 생성자를 만들어준다.

@AllArgsConstructor는 모든 파라메터를 가진 생성자를 만들어준다.

뿐만 아니라 toString() 함수도 자동으로 구현해준다. 이것을 확인하는 방법은 Control-F12 를 눌러서 File Structure를 확인해보면 아래와 같이 확인할 수 있다.

ResultVO(int, String), ResultVO() 라는 생성자와 setMesssage(String), setCode(int) 라는 세터함수, getMesssage(), getCode() 라는 게터함수,  toString() 함수까지 자동으로 생성되어있음을 알수있다.

LOMBOK 단위 테스트

lombok이 제대로 동작하는지 JUnit 으로 단위테스트를 해보자. test > java 소스폴더의 com.eastflag.fullstack 패키지에 LombokTest 클래스를 아래와 같이 만든다.

화일을 선택하고 우클릭후  Run을 클릭해서 실행한다.

Response – JSON 데이터 리턴

hello5 메서드를 만들고 json 객체를 리턴하도록 한다.

리턴타입이 ResultVO 객체라는 점에 주목하자.   객체를 리턴하게 되면 스프링프레임웍에 jackson mapper 라이브러리가 자바 객체를 json으로 변환해주는 역할 을 수행하게 되므로 단순히 자바객체만 리턴하면 된다.

postman으로 테스트해보자.

Request – JSON 데이터 보내기

이번에는 json으로 데이터를 보내는 경우이다.

 @RequestBody ResultVO result 의 의미는 Request의 Body를 받아서 그것을 ResutlVO 객체로 변환  하라는 의미이다. 그러므로 body 부분에 json 데이터를 보내면 그것이 자바 객체로 자동으로 변환이 된다. 이것도 위에서 언급한 jsckson mapper가 수행해준다.

postman으로 테스트해보자.

이것을 fiddler로 캡쳐해서 데이터를 한번 보면 다음과 같다.

  request Header  부분중  Content-Type이 application/json  이라는걸 잘 기억해야 한다. 이것은 내가 request Body를 json 형태로 보내겠다는 것을 의미한다.

또한 response Header의 Content-Type 도 application/json으로 되어있다. 이것은 response 의 Body가 json 이라는 의미이다.