티스토리 뷰

Programming/Other

[IT] REST API

sohyun_ 2018. 12. 9. 10:00

# REST(Representational State Transfer)

REST는 웹의 창시자 중의 한 사람인 로이 필딩(Roy Fielding)이 2000년에 발표한 박사학위 논문에 의해서 소개되었다. 현재의 아키텍처가 웹의 본래 설계의 우수성을 많이 사용하지 못하고 있다고 판단했기 때문에 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처를 소개했는데, 그것이 바로 Representational Safe Transfer (REST)이다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다. REST 원리를 따르는 시스템은 종종 RESTful이란 용어로 지칭된다.


# REST API의 구성

REST API는 다음 3가지 구성으로 이루어져있다.

1) 자원(Resource) - URI

2) 행위(Verb) - HTTP Method

3) 표현(Representations), 메시지


# HTTP 메서드

HTTP에는 여러가지 메서드가 있지만, REST에서는 CRUD(Create Read Update Delete)에 해당하는 4가지의 메서드를 사용한다.

메서드

Idempotent

의미

POST

X

Create, 생성

GET

O

Select, 조회

PUT

O

Update, 수정

DELETE

O

Delete, 삭제

위의 테이블에서 Idempotent(멱등성)이란, 매번 결과가 달라지지 않는다는 뜻이다.


# REST API의 특성

1) 유니폼 인터페이스(Uniform Interface) : HTTP 표준에만 따른다면 어떠한 기술이든지 사용할 수 있는 인터페이스 스타일이다. 특정언어나 기술에 종속 받지 않고 사용할 수 있는 느슨한 결합 형태의 구조이다.


2) 무상태성(Stateless) :  클라이언트의 컨텍스트를 서버 쪽에 유지하지 않는다는 의미로, 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 서버에서는 들어오는 요청만을 단순히 처리하면 된다. 


3) 캐시가능(Cacheable) : HTTP 라는 기존 웹표준을 그대로 사용하기 때문에 웹에서 사용하는 기존 인프라를 그대로 활용이 가능해 HTTP가 가진 캐싱 기능이 적용 가능합니다. 


4) 자체표현구조(Self-descriptiveness) : REST의 가장 큰 특징 중의 하나는 REST API 자체가 쉬워서 API메시지만 보고도 이를 이해 할 수 있는 자체 표현 구조로 되어있다는 것이다.


5) 클라이언트 서버 구조 (Client-Server) : 서버는 API를 제공하고 제공된 API를 이용해서 비즈니스 로직 처리 및 저장을 책임진다. 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보를 직접 관리하고 책임지는 구조로 역할이 나누어지고 있다. 이렇게 각각의 역할이 확실하게 구분되면서 개발 관점에서 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로의 개발에서 의존성이 줄어들게 된다.


6) 계층형 구조(Layered System) : 클라이언트로서는 REST API 서버만 호출하고, 서버는 다중 계층으로 구성될 수 있다. 다중 계층으로 구성된 서버는 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이같은 네트워크 기반의 중간매체를 사용할 수 있게 한다.


'Programming > Other' 카테고리의 다른 글

[MAC] Microsoft Remote Desktop 10  (1) 2019.08.06
[IT] Linux Crontab  (0) 2019.01.23
[IT] Request SMS Vertification on the Server  (0) 2019.01.17
[MAC] DockBar Delay  (0) 2018.11.20
[MAC] 마우스 속도조절  (0) 2018.11.12
댓글
최근에 올라온 글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday