본문 바로가기
  • 개발공부 및 일상적인 내용을 작성하는 블로그 입니다.
이론/웹

Web - REST API

by 방구석 대학생 2022. 1. 31.

 

REST : 웹(HTTP) 의 장점을 활용한 웹 개발 아키텍쳐

 

1. REST(REpresentational State Transfer) 기본

* REST의 요소

- Method

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

- Idempotent : 한 번 수행하든, 여러번 수행하든 결과가 같은지 여부

 

- 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 를 통해 전이 되어야 한다.

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

 

 

- Statelesss

* HTTP Session 과 같은 컨텍스트 저장소에 상태 정보를 저장하지 않는다.

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

* 따라서 REST API 실행 중 실패가 발생한 경우, 트랜잭션 복구를 위해 기존의 상태를 저장할 필요가 있다.

(POST Method 제외)

 

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

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

 

- Client-Server Architecture (클라이언트/서버 구조)

: 구조를 단순화 시키고, 작은 단위로 분리 함으로서 클라이언트 - 서버의 각 파트가 독립적으로 개선될 수 있도록 해준다.

- Cache Ability (캐시처리 가능)

: WWW 에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다. 잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability 와 성능을 향상 시킨다.

- Layered System(계층화)

: 클라이언트는 보통 대상 서버에 직접 연결 되었는지, 또는 중간 서버를 통해 연결 되었는지를 알 수 없다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로서 시스템 규모 확장성을 향상시키는데 유용하다.

- Code on Demand(Optional)

: 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.

'이론 > ' 카테고리의 다른 글

Web - Web Server 와 WAS  (0) 2022.01.31
Web - Http status code  (0) 2022.01.31
Web - 쿠키 & 세션  (0) 2022.01.31
Web - 브라우저 동작 방법  (0) 2022.01.31