티스토리 뷰

Web

REST API 간단한 정리

꿈을 위해 잠을 잊은 그대에게 2020. 6. 27. 17:56

REST API


REST(Representational State Transfer)

웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용하는 것

*자원을 정리하고 자원에 대한 주소를 지정하는 방법론을 의미

 

API(Application Programming Interface)

응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

API를 통해 소스 및 DB에는 접근하지 못하게 하고 해당 프로그램을 사용할 수 있도록 기능을 제공하게 하는 것이다.

 

REST API(REST + API)

REST의 특징을 지키면서 API를 제공하는 아키텍쳐

 

 

REST의 요소

Method

Method 의미 Idempotence
GET Select Yes
POST Create No
PUT Update Yes
DELETE Delete Yes

Idempotence : 한 번 수행하는가, 여러 번 수행했을 때 결과가 같나?

 

 

Resource

http://myweb/users와 같은 URI

모든 것을 Resource (명사)로 표현하고, 세부 Resource에는 id를 붙임

 

Message

메시지 포맷이 존재

: JSON, XML 과 같은 형태가 있음 (최근에는 JSON 을 씀)

HTTP POST, http://myweb/users/
{
	"users" : {
		"name" : "terry"
	}
}

 

REST 특징

Uniform Interface

HTTP 표준만 맞는다면, 어떤 기술도 가능한 Interface 스타일

예) REST API 정의를 HTTP + JSON로 하였다면, C, Java, Python, IOS 플랫폼 등 특정 언어나 기술에 종속 받지 않고, 모든 플랫폼에 사용이 가능한 Loosely Coupling 구조 포함

 

Self-Descriptive Messages

API 메시지만 보고, API를 이해할 수 있는 구조 (Resource, Method를 이용해 무슨 행위를 하는지 직관적으로 이해할 수 있음)

 

HATEOAS(Hypermedia As The Engine Of Application State)

Application의 상태(State)는 Hyperlink를 통해 전이되어야 함.

서버는 현재 이용 가능한 다른 작업에 대한 하이퍼링크를 포함하여 응답해야 함.

 

Resource Identification In Requests

 

Resource Manipulation Through Representations

 

Statelessness

즉, HTTP Session과 같은 컨텍스트 저장소에 상태 정보 저장 안함

 

**Request만 Message로 처리**하면 되고, 컨텍스트 정보를 신경쓰지 않아도 되므로, 구현이 단순해짐.

 

따라서, REST API 실행중 실패가 발생한 경우, Transaction 복구를 위해 기존의 상태를 저장할 필요가 있다. (POST Method 제외)

 

Resource 지향 아키텍쳐 (ROA : Resource Oriented Architecture)

Resource 기반의 복수형 명사 형태의 정의를 권장.

 

Client-Server Architecture

클라이언트는 사용자 인증 등을 관리하고 서버는 API를 제공하는 등의 역할이 확실하게 구분되어 작동할 수 있게 한다.

 

Cache Ability

웹에서 사용하는 기존의 인프라를 그대로 활용이 가능해 HTTP가 가진 가장 강력한 특징 중 하나인 캐싱 기능을 적용할 수 있다.

 

이렇게 캐시를 사용하게 되면 네트워크 응답시간 뿐만 아니라, REST 컴포넌트가 위치한 서버에 트랜잭션을 발생시키지 않아, 전체 응답시간과 성능 그리고 서버의 자원 사용률을 비약적으로 향상시킬 수 있다.

 

Layered System

서버는 클라이언트가 모르게(클라이언트에서는 REST API서버만 호출) API 서버에 여러 계층(사용자 인증, 암호화, 로드밸런싱 등)을 추가하여 유연한 구조로 개발 될 수 있다.

 

Code On Demand(Optional)

클라이언트는 리소스에 대한 표현을 응답으로 받고 처리해야 하는데, 어떻게 처리하여야 하는지에 대한 code를 서버가 제공하는 것을 의미

'Web' 카테고리의 다른 글

OAuth의 개념과 인증과정  (0) 2020.06.28
[Web] HTTP status code  (0) 2020.06.18
[Web] Cookie & Session  (0) 2020.06.17
[Web] 브라우저 동작 과정과 방법  (0) 2020.06.16
Web Server & WAS(Web Application Server)의 차이와 서비스구조  (0) 2020.04.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크