Skip to content

Latest commit

 

History

History
68 lines (46 loc) · 2.61 KB

REST.md

File metadata and controls

68 lines (46 loc) · 2.61 KB

REST 너 뭐..돼?

REST는 Representational State Transfer의 약자로, 자원을 name으로 구분하여 해당 자원의 상태를 주고 받는 아키텍처 입니다. HTTP의 주요 저자 중 한 사람인 필딩씨가 2000년 처음 논문에서 사용하면서 사용 되었는데, 나중에 저도 하나 줄여서 역사에 남겨볼랍니다.


다시 본론으로.. 말 그대로 자원의 표현으로 하는 상태 전달하는 것을 의미 합니다.


🙄여기서 자원은?
프로그램이 관여하는 데이터나 설계 등등의 모든 것들

🙄표현 방법은 어떻게?
예를 들어서 직원 목록(자원)을 제공하는 서비스일 경우, 'person'이라는 이름으로 표현합니다.

🙄상태 전달은?
데이터를 조회/추가/변경/삭제가 필요할 때 자원의 상태를 전달합니다


필딩씨가 소개한만큼, REST는 HTTP 프로토콜과 같이 쓰입니다.
개인적으로는 이보다 더 직관적이고 효율적인 방법이 있을까 싶습니다.

API 서버를 개발할 때도, 자원을 요청하는 클라이언트와 서버 사이에서 통신할 때는 무조건 사용하게 되는 것 같아요.


👣 REST 정의

REST는 HTTP URI를 통해 자원을 정의하고, HTTP Method를 사용하여 해당 자원에 대한 CRUD를 수행하는 방식을 뜻합니다.


👣 REST 특징 6가지

인터페이스 일관성
URI로 자원에 대한 요청을 하는 동작 형식.

Server-Client 구조
자원을 제공하는 쪽 -> Server 자원을 요청하는 쪽 -> Client

Stateless
HTTP 프로토콜이 Stateless 프로토콜이기 때문에, REST 또한 그렇다 서버는 클라이언트의 요청을 처리하고, 세션이나 쿠키 등은 관리하지 않는다

Cacheeable
여윽시 HTTP의 특징 중 캐싱 기능 사용 가능.

Layered System
프록시에 대한 설명과 비슷하다. 클라이언트는 자원을 얻기 위해 진짜 서버/중간 서버로 요청할 뿐. 중간 서버는 로드밸런싱 또는 공유 캐시 등을 제공할 수 있다 -> 시스템 규모 확장에 유용하다

Code on demand
이건 처음 알았는데, 자바 스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송해서 기능 확장이 가능하다고 한다.


👣 REST의 목표

  • 구성 요소 상호작용의 규모 확장성
  • 인터페이스의 범용성
  • 구성 요소의 독립적인 배포
  • 중간적 구성요소를 이용해 응답 지연 감소, 보안 강화


출처 https://ko.wikipedia.org/wiki/REST