본문 바로가기
Spring

[Spring] @RestController 와 JSON

by jane.dev 2021. 10. 1.
반응형

기존의 Controller에서는 Model에 데이터를 담아 JSP 와 같은 view로 전달하는 방식이였다면,

REST 방식의 데이터 처리를 위한 @RestController 어노테이션은 Controller의 모든 메서드의 리턴 타입을 기존과 다르게 처리

@RestController를 이용해 메서드의 리턴 타입으로 사용자가 정의한 클래스 타입을 사용할 수 있으며,
이를 JSON이나 XML로 처리 → JSP와 달리 순수한 데이터를 반환

 

pom.xml에 JSON 혹은 XML로 데이터를 처리하기 위한 라이브러리 추가

Jackson Databind

 

브라우저에 객체를 JSON이라는 포맷의 문자열로 변환시켜 전송

JSON(JavaScript Object Notation)
구조를 가진 데이터를 {}, 중괄호로 묶고 '키' 와 '값'으로 구성하는 경량의 데이터 포맷

 

Jackson Dataformat XML

다른 라이브러리 추가

2021.09.10 - [Spring] - [Spring] Maven repository 외부 라이브러리 추가

 

[Spring] Maven repository 외부 라이브러리 추가

Spring TestContext Framework JUnit을 이용해 전체 프로젝트를 구동하지 않고 단위 테스트 진행 시 더 쉽게 할 수 있도록 지원(JUnit 확장) @Test JUnit의 테스트 지원 어노테이션으로, 각각의 테스트가 서로

wheneveryouwantsz.tistory.com

 

TestVO 객체 생성

public class TestVO{
    private Integer mno;
    private String name;
    private Integer age;
}

 

TestController

문자열 반환

@RestController
@RequestMapping("/test")
public class TestContoller{
    
    @RequestMapping("/hello")
    public String sayHello(){
        return "Hello Hello";
    }
}

매핑된 경로로 들어가면 메서드의 리턴 타입으로 반환된 문자열을 확인할 수 있음

 

객체 반환

@RestController
@RequestMapping("/test")
public class TestContoller{
    
    @RequestMapping("/sendVO")
    // TestVO를 리턴하는 메서드 작성
    public TestVO sendTestVO(){
        TestVO testVO = new TestVO();
        testVO.setMno(1);
        testVO.setName("jane");
        testVO.setAge(28);
        return testVO;
    }
}

JSON 타입의 데이터를 반환

 

컬렉션 타입 반환

여러 데이터를 한번에 전달하기 위한 리스트 객체를 전송

@RestController
@RequestMapping("/test")
public class TestContoller{
    
    @RequestMapping("/sendVO")
    // List<TestVO>를 리턴하는 메서드 작성
    public TestVO sendTestList(){
        List<TestVO> list = new ArrayList<>();
        // 1부터 10까지의 반복문을 처리하면서 TestVO를 만들고 List<TestVO>가 생성됨
        for(int i = 0; i < 10; i++){
            TestVO testVO = new TestVO();
            testVO.setMno(i);
            testVO.setName(i + "jane");
            testVO.setAge(10 + i);
            list.add(testVO);
        }
        return list;
    }
}

대괄호로 묶인 TestVO 객체의 리스트가 반환된 것을 확인 가능