본문 바로가기
WEB/Spring

[Spring] Spring REST API

by 댕꼬 2022. 4. 25.

Spring REST API


REST(Representational State Transfer)

: 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다.

HTTP URI를 통해 제어할 자원(Resource)를 명시하고, HTTP Method(GET,POST, PUT, DELETE)을 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍쳐

 

 

REST구성

- 자원 (Resource) : URI

- 행위 (Verb) : HTTP  Method

- 표현 (Representations)

 

 

기존Service와 REST Service의 차이점

  • 기존 Service : 요청에 대한 처리를 한 후 가공된 data를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어 반환
  • REST Service : data처리만 한다거나, 처리 후 반환될 data가 있다면 JSON이나 XML형식으로 전달.
작업 기존방식 REST방식 비고
Create(Insert) POST /write.do?id=id POST /blog/id 글쓰기
Read(Select) GET /view.do?id=id&articleno=5 GET /blog/id/25 글읽기
Update(Update) POST /modify.do?id=id PUT /blog/id 글수정
Delete(Delete) GET /delete.do?id=id&articleno=5 DELETE /blog/id/25 글삭제

- 기존의 블로그등은 GET과 POST만으로 자원에 대한 CRUD를 처리하며, URI는 액션을 나타냈다.

- REST로 변경할 경우 4가지 method를 모두 사용하여 CRUD를 처리하며, URI는 제어하려는 자원을 나타낸다.

 

 

REST API설정

: pom.xml에 아래와 같은 라이브러리 추가

   - jackson-databind 라이브러리 객체는 JSON포맷의 문자열로 변환시켜서 브라우저로 전송

   - jackson-dataformat-xml 라이브러리는 객체를 xml로 브라우저로 전송

 

 

REST 관련 Annotation

Annotation Description
@RestController Controller가 REST방식을  처리하기 위한 것임을 명시
@ResponseBody JSP 같은 뷰로 전달되는  것이 아니라 데이터 자체를 전달
@PathVariable URL 경로에 있는 값을 파라미터로 추출
@CrossOrigin Ajax의 크로스 도메인 문제를 해결
@RequestBody JSON 데이터를 원하는타입으로 바인딩

댓글