본문 바로가기

WebApplication

[Spring] REST방식의 데이터 전송(@ResponseBody)

서버의 역할은 점점 더 순수 데이터에 대한 처리를 목적으로 하는 형태로 바뀌고 있다 .

REST 방식이란 Repersentational State Transfer의 약자로 하나의 URI는 하나의 고유 리소스를 대표하도록 설계된다는 개념에 전송방식을 결합하여 요청에 응답한다. 즉 리소스를 이름으로 구분하고 전송 방식을 명기하는 클라이언트와 서버의 데이터 송수신 방법이다. 

** URI 는 리소스의 식별자이고 URL은 이의 하위 개념이라고 생각하면 된다 . URI의 I는 database의 pk와 같은 고유 식별 경로가 포함된 형태의 주소이다. 

 

REST 전송방식 

종류:: GET(create) / POST(read) / PUT, PATCH(update) / DELETE(delete)

스프링에서는 @ReseponseBody 어노테이션을 사용하여 주로 json형태의 데이터를 전송한다. 

- @RestController :: 컨트롤러가 REST방식을 처리하기 위한 것임을 스프링에게 명시

- @ResponseBody :: 일반적인 JSP와 같은 뷰로 전달되는 것이 아니라 데이터 자체를 전달하기 위한 용도

 

REST방식은 기존의 Model 객체에 데이터를 바인딩하여 jsp 에 전달하는 방식과 다소 다르게 동작한다. 먼저 @RestController 로 컨트롤러의 메서드 리턴타입을 지정해준다. 현재 프로젝트의 경우 JSON을 사용해 전달할 예정이므로 pom.xml 내에 jackson-databind 라이브러리를 추가해주어야 한다. jackson-databind 라이브러리를 사용하면 데이터를 JSON 포맷의 문자열로 변환시켜 객체를 전달할 수 있다. 

** JSON (javaScript Object Notation)

:: 데이터를 중괄호(오브젝트)로 묶고 key-value쌍으로 값을 구성하는 경량 데이터 포맷

ex) {"회원ID : id1", "회원등급 : 일반 "} 

>> xml에서도 객체를 표현할때 이와 같은 구조를 사용한다

기존에는 @GetMapping 어노테이션에서 요청 경로만 지정해주었다면 @RestController 어노테이션을 사용하는 경우 value 값에 전송할 텍스트 형식을 지정하고 http전송방식을 method속성에 추가해주어야 한다. 이후 컨트롤러를 호출하여 확인해보면 기존과 달리 JSON타입으로 데이터가 전달되는 것을 확인할 수 있다.

@RequestMapping(value="{custno}", method={RequestMethod.POST, RequestMethod.GET})

 

REST방식은 URI와 결합하므로 아래와 같은 형태로 반영된다.

- 등록 :: POST /member/register

- 조회 :: GET /member/{id}

- 수정 :: PUT  /member/{id} + body(reqeustBody)

- 삭제 :: DELETE  /member/{id}