VO 객체 만들기
Json은 JavaScript Object Notation이다.
스트링타입이 아니라 { “code”: 0, “message”: “name” } 라는 json 형태로 리턴하기 위해서 com.eastflag.fullstack 폴더에 domain 패키지를 추가하고 ResultVO 클래스를 추가한다.
1 2 3 4 5 6 7 |
@Data @NoArgsConstructor @AllArgsConstructor public class ResultVO { private int code; private String messsage; } |
여기서 어노테이션은 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 클래스를 아래와 같이 만든다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com.eastflag; import com.eastflag.domain.ResultVO; import org.junit.Test; /** * Created by eastflag on 2016-11-04. */ public class LombokTest { @Test public void ResultTest() { ResultVO result = new ResultVO(0, "hong"); System.out.println(result); } } |
화일을 선택하고 우클릭후 Run을 클릭해서 실행한다.
Response – JSON 데이터 리턴
hello5 메서드를 만들고 json 객체를 리턴하도록 한다.
1 2 3 4 5 |
@PostMapping("/hello5") public ResultVO hello5(@RequestParam("name") String name) { ResultVO result = new ResultVO(0, name); return result; } |
리턴타입이 ResultVO 객체라는 점에 주목하자. 객체를 리턴하게 되면 스프링프레임웍에 jackson mapper 라이브러리가 자바 객체를 json으로 변환해주는 역할 을 수행하게 되므로 단순히 자바객체만 리턴하면 된다.
postman으로 테스트해보자.
Request – JSON 데이터 보내기
이번에는 json으로 데이터를 보내는 경우이다.
1 2 3 4 |
@PostMapping("/hello6") public ResultVO hello6(@RequestBody ResultVO result) { return result; } |
postman으로 테스트해보자.
이것을 fiddler로 캡쳐해서 데이터를 한번 보면 다음과 같다.
request Header 부분중 Content-Type이 application/json 이라는걸 잘 기억해야 한다. 이것은 내가 request Body를 json 형태로 보내겠다는 것을 의미한다.또한 response Header의 Content-Type 도 application/json으로 되어있다. 이것은 response 의 Body가 json 이라는 의미이다.