Back-End/REST with spring boot basic

05. json 데이터 보내고 받기

728x90

VO 객체 만들기

Json은 JavaScript Object Notation이다.

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

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResultVO {
    private int result;
    private String msg;
}

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

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

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

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

뿐만 아니라 toString() 함수도 자동으로 구현해준다. 이것을 확인하는 방법은 Control-F12 를 눌러서 File Structure를 확인해보자.(안보이면 plug-in 에서 lombok 검색 후 설치)

 

ResultVO(int, String), ResultVO() 라는 생성자와 setMsg(String), setResult(int) 라는 세터함수, getMsg(), getResult() 라는 세터함수,  toString() 함수까지 자동으로 생성되어있음을 알수있다.

 

LOMBOK 단위 테스트

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

import com.test.springboot.ResultVO;
import org.junit.Test;
 

public class LombokTest {
 
    @Test
    public void ResultTest() {
        ResultVO result = new ResultVO();
        result.setResult(0);
        result.setMsg("hong");
        System.out.println(result);
    }
}

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

HELLO5 메서드:   JSON 데이터 리턴하기

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

@PostMapping("/hello5")
public ResultVO hello5(@RequestParam("name") String name) {
	ResultVO result = new ResultVO();
	result.setResult(0);
	result.setMsg(name);
	return result;
}

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

postman으로 테스트해보자.

HELLO6 :  입력을 JSON으로 받기

이번에는 입력을 json으로 받는 경우이다.

@PostMapping("/hello6")
public ResultVO hello6(@RequestBody ResultVO result) {
	return result;
}

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

postman으로 테스트해보자.