Web

REST(Representatilnal State Transfer) API

superbono 2021. 5. 4. 14:48

* OPEN API (Application Programming Interface)

 - OPEN API 는 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 interface(약속).

 - OPEN API와 함께 거론되는 기술이 REST이며, 대부분의 OPEN API는 REST 방식으로 지원됨

 - 데이터를 외부 응용 프로그램에서 사용할 수 있도록 OPEN API를 써야 하는데 외부 응용에서 어떤 방식으로 쓸지 모른다. 따라서 xml, JSON을 선호함

 

* REST(Representatilnal State Transfer)

- REST는 'Representatilnal State Transfer'의 약어로 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송 방식을 결합해서 원하는 작업을 지정한다. URI + GET(read)/POST(create)/PUT(update)/DELETE(delete)

 - 웹의 장접을 최대한 활용할 수 있는 아키텍쳐로 REST 탄생

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

 

* REST 구성

 - 자원 (Resource): URI

 - 행위(Verb): HTTP Method

 - 표현(Representations)

잘 표현된 HTTP URI로 리소스를 정의하고 HTTP method로 리소스에 대한 행위를 정의한다. 

리소스는 JSON, XML 과 같은 여러가지 언어로 표현될 수 있다.

 

* 기존 Service와 REST Service

 - 기존 Service: 요청에 대한 처리를 한 후 가공된 data를 이용하여 특정 플래폼에 적합한 형태의 View(JSP)로 만들어서 반환한다. 

 - REST Service: data 처리만 한다거나, 처리 후 반환될 data가 있다면 JSON이나 XML(공용이라고 생각하면 된다) 형식으로 전달한다. View에 대해서는 신경 쓸 필요가 없어서 Open API에서 많이 사용한다. 

 

* REST

 - 기존의 전송 방식과는 달리 서버는 요청으로 받은 리소스에 대해 순수한 데이터를 전송한다. 

 - 기존의 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD 처리를 할 수 있다. 

 - HTTP URI를 통해 제어할 자원(Resource)를 명시하며, HTTP METHOD(GET/POST/PUT/DELETE) 를 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 아키텍쳐이다. 

 

* 기존의 웹 접근 방식과 REST API 방식의 차이점

작업   기존 방식   REST 방식 비고
Create(Insert) POST /write.do POST /blog/hello 쓰기
Read(Select) GET /view.do?id=hello&no=5 GET /blog/hello/10 읽기
Update(Update) POST /modify.do PUT /blog/hello 수정
Delete(Delete) GET /delete.do?id=hello&no=5 DELETE /blog/hello/10 삭제

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

REST로 변경할 경우 4가지 메소드를 모두 사용하여 CRUD를 처리하며 URI는 제어하려는 자원을 나타냄

 

* REST 관련 Annnotation

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

 

* REST 작성 용법

 - 정확한 문법과 표준이 존재하지 않음 

 - 하이픈은 사용 가능하나 언더바는 사용하지 않는다.

 - URI 마지막에 /를 사용하지 않는다.

 - / 로 계층 관계를 나타낸다.

 - 확장자가 포함된 파일 이름을 직접 포함시키지 않는다. 

 - URI는 명사를 사용한다. 

 

 

 

 

 

 

 

'Web' 카테고리의 다른 글

SPA(Single Page Application)  (0) 2021.05.19
MVC vs MVVM  (0) 2021.05.12
메이븐(Maven) 이란?  (0) 2021.04.29
IoC(Inversion of Control)/DI  (0) 2021.04.29
Spring 개요  (0) 2021.04.29