기본 웹 어플리케이션은 응답 결과를 브라우저가 사용하는 코드인 HTML, CSS, JavaScript로 생성하여 전달한다. 이 데이터들은 브라우저가 화면을 구성하고 꾸미며 기능을 수행하기 위한 코드들이다. 

Restful API 서버는 응답 결과를 데이터만으로 구성하여 클라이언트로 전달하는 서버를 의미한다. 서버가 가진 데이터를 JSON문서양식에 맞춰서 응답결과로 클라이언트에게 보낸다.

Restful API 서버는 웹에서 Ajax통신이나 안드로이드 모바일 서비드를 할 때 등 다양한 플랫폼으로 데이터를 전달할 때 사용할 수 있다. 최근들어서 React, Angluar, Vue.js와 같은 Script기반의 웹 어플리케이션을 만들 때 많이 사용하고 있는 방법이다..!

 

 

 

@RestController

Spring MVC에서 Controller를 구성할 때 @Controller를 사용하면 return하는 값은 사용할 jsp에 대한 정보를 가진다.

그런데 @RestController를 통해서 return을 하게 되면 리턴값 자체를 브라우저로 전달하는 응답결과로 생성하여 보내게 된다. 예를들어 return "result"; 하면 result라는 문자열이 데이터로서 전달 된다고 할 수 있겠다.

 

 

Jackson 라이브러리

Jackson 라이브러리를 사용하여 객체나 리스트를 반환하게 되면 반환하는 대상을 JSON형식으로 바꾸어서 리턴해준다.

pom.xml에 dependency를 추가하여 라이브러리를 사용해보자.

 

 

Jackson Databind라고 검색하여 Maven부분을 추가해주도록 하자.

 

 

 

버전관리를 위해서 version은 따로 정의했다.

 

 

 

DataBean이라는 빈클래스를 만들었다. 어떠한 형태이든 JSON으로 변환됨을 확인하기 위해서 String, int, double, boolean형의 프로퍼티 총 4개를 만들었다. 간단하게 값을 넣을 수 있도록 생성자를 통해서 주입이 가능하도록 만들어 보았다.

 

 

 

Controller 부분이다.

@Controller가 아닌 @RestController를 써줌으로써 이 컨트롤러의 return값은 그 값 자체를 응답결과로 보낼 수 있다.

 

ResponseEntity<T> 형태의 메소드를 정의해주었다.

이 메소드에서는 Databean 빈 클래스 객체 3개를 ArrayList<Databea>형의 리스트에 넣어주었다. 리스트에는 객체 3개가 담겼을 것이다.

 

ResponseEntity<T>의 제네릭에 ArrayList<Databean>을 넣어주면 리스트안에 들어있는 객체의 구조를 파악해서 JSON문서로 만들어주게 된다. JSON객체를 첫번째 매개변수에, 응답결과를 두번째 매개변수에 넣어주었다.

 

 

 

실행결과

 

 

이렇게 JSON형식의 데이터가 반환이 되는 것을 볼 수 있었다.

RestfulAPI는 클라이언트로 전달할 데이터의 총량을 줄이기 위해서 들여쓰기나 칸을 내려서 쓰지 않는다.

한눈에 JSON형식을 보려면 Chrom 웹 스토어에서 JSON Formatter를 설치하면 된다.

 

 

 

 

JSON Formatter를 설치한 후 실행해보면

 

 

이렇게 한눈에 볼 수 있는 JSON파일 양식을 얻을 수 있다.

리스트이기 때문에 1, 23줄을 대괄호( [] )로 묶여 있고, 리스트안에는 객체가 들어있기 때문에 3, 8줄과 같이 중괄호( {} )로 묶여 있는 것을 볼 수 있다.

'JAVA > Spring MVC' 카테고리의 다른 글

예외처리  (0) 2020.05.03
Interceptor  (0) 2020.05.03
JSR-303, JSR-380 어노테이션  (0) 2020.05.01
에러메세지 커스터마이징  (2) 2020.04.30
Spring MVC 유효성검사  (0) 2020.04.30

+ Recent posts