IT/etc

REST API란?

음료요정 2022. 3. 14. 20:11

 

 

REST API란?

Representational State Transfer 의 약자이다
자원의 이름으로 URI를 명시, 구분하여 HTTP Method ( POST, GET, PUT, DELETE)를 통해
해당자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
창시자 Roy T.Fielding 의 박사학위 논문에 그는 분산 하이퍼미디어 시스템 (예:웹)을 위한 아키텍쳐 스타일 이라고 표현했다.



(+)
토스 개발자의 세션을 보고 기록하였습니다.
https://tv.naver.com/v/2292653

 

Day1, 2-2. 그런 REST API로 괜찮은가

NAVER Engineering

tv.naver.com



인터넷에 어떻게 정보를 공유할수 있을까? 고민하다가 -> 정보들을 하이퍼텍스트로 연결하는 방법을 선택.
표현형식 : HTML
식별자 : URI
전송방법 : HTTP 프로토콜

REST를 구성하는 스타일 6가지 :

1. client-server 구조
서버와 클라이언트간의 역할이 명확히 나뉘기 때문에 각 필드에서 개발해야할 점이 명확해지고 서로간의 의존성이 줄어들게 된다.

2. stateless : 무상태성
작업을 위한 상태정보를 별도로 저장하고 관리하지 않는다. 따라서 서비스의 자유도가 높아지고, 서버에서 불필요한 정보를 관리하지 않기 때문에 구현이 단순해진다.

3. cacheable : 캐시 가능
REST는 웹 표준인 HTTP를 사용하기 때문에, 웹의 인프라를 그대로 사용할 수 있다. 따라서 HTTP가 가진 캐싱 기능을 적용할수가 있다. HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag등을 이용하면 쉽게 구현 가능하다고 한다.

4. uniform interface : 유니폼 인터페이스
Uniform Interface는 Client가 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 의미한다.

params를 사용한 URL        {userId}?auth=admin
한정적인 인터페이스의 URL {userId}/admin

이런 한정적 인터페이스를 사용하면 간편하게 나타낼수 있고, 하나의 URL을 이용해 많은 representation을 할 수있다는 장점있다.

5. layered system : 계층형 구조
REST 서버는 다중 계층으로구성 될수 있으며, 보안, 로드밸런싱, 암호화 계층 등을 추가해 구조상의 유연성을 둘수 있고, Proxy와 게이트웨이같은 네트워크 기반의 중간매체를 사용할 수 있다.

6. code-on-demand (optional)
서버에서 코드를 클라이언트로 보내서 써야할수 있어야한다. (자바스크립트)




그 중 Uniform Interface 의 4가지 제약조건이 가장 지켜지기가 힘들다.
Uniform Intergace의 제약조건 :
- idenditication of resources
- manipulation of resources through representations
- self-descriptive messages ->메세지는 스스로를 설명해야한다. 메세지의 내용으로 온전히 해석이 가능해야한다.
화장 가능한 커뮤니케이션이 가능하다. 서버와 클라이언트가 변경되더라도 언제나 해석이 가능하다.
- hypermedia as the engine of application status (HATEOAS) -> 어플리케이션의 상태는 Hyperlink를 이용해 전이되어야한다. 애플리케이션 상태 전이의 late binding이 가능해진다. 링크는 동적으로 변경될 수 있다.



uniform interface 를 하는 이유는?
- 서버와 클라이언트가 각각 독립적으로 진화한다.
- 서버의 기능이 변경되어도 클라이언트를 업데이트 할 필요가 없다.
- REST 를 만들게 된 계기 : How do I improve HTTP without breaking the WEB?


HTTP 등장
HTTP/1.0 (1994-1996)
->HTTP Object Model
HTTP를 웹을 망가뜨리지않고 개선시키는 방법이 뭐가있을까? 고민끝에 나온 모델
->REST (1998)
4년 후 Roy T.Fielding, Microsoft Research 에 발표
->REST (2000)
박사 논문 발표


API 등장
XMl-RPC (1998) 프로토콜이 만들어짐 -> 추후 SOAP이란 이름으로 바뀜
-> flickr API (2004.8)
SOAP 이름을 바꿔서 좀더 단순하게 변형됨


REST API 의 유형

POST 생성
GET 조회
PUT 수정
DELETE 삭제
HEAD Header 정보 조회



REST의 장단점

- 장점 :
HTTP 프로토콜의 인프라를 그대로 사용해서 별도의 인프라 구축이 필요가 없다. HTTP 표준 프로토콜을 사용하는 모든 플랫폼에서 사용이 가능하다.
서버와 클라이언트의 역할을 명확하게 분리한다.

- 단점 :
표준이 존재하지 않는다.