REST가 어떤 계기로 나왔는가?
- 어떻게 정보를 공유할 것인가에 대한 해답으로 WEB (표현형식 : HTML, 식별자 : URI, 전송방법 : HTTP)을 만듬
- 이미 전세계적으로 HTTP 프로토콜이 이용되고 있는 상황에서 어떻게 기능을 수정하고 업그레이드 할 지에 대한 고민의 해답으로 REST 방식이 나옴.
REST API란?
REST 아키텍쳐 스타일을 따르는 API
REST란?
웹과 같은 분산 하이퍼미디어 시스템을 위한 아키텍쳐 스타일
아키텍쳐 스타일?
제약조건의 집합
REST를 구성하는 스타일
- Client-server
- Stateless
- cache
- uniform interface
1. 리소스가 uri로 식별될 것
2. 메시지 전송 (리퀘스트, 리스폰스)를 통해서 리소스를 제어해야한다.
3. 메시지는 스스로를 설명해야한다. (Self-descriptive message) *아래 1번 이미지 참고
4. 에플리케이션의 상태는 hyperlink를 이용해 전이되어야한다. (HATEOAS)
*예시
글 목록 보기 (GET/articles) - 글 쓰기 (GET/new-form) -> 글 저장 (POST/articles) ->
생성된 글 보기 (GET/articles/10) -> 목록 얻기 (GET/articles) - Layered system
- Code-on-demand (optional)
서버에서 코드를 클라이언트로 보내서 실행할 수 있어야함
Uniform Interface를 왜 해야하는가?
독립적 진화
- 서버와 클라이언트가 독립적으로 진화한다.
- 서버의 기능이 변경되어도 클라이언트를 업데이트할 필요가 없다.
- REST를 만들게 된 계기 : "How do I Improve HTTP without breaking the web."
웹에선 REST API가 잘 적용되어 있다.
- 웹 페이지를 변경했다고 웹 브라우저를 업데이트할 필요 없음
- 웹 브라우저를 변경했다고 웹 페이지를 변경할 필요 없음
- HTTP, HTML의 명세가 변경되어도 웹은 잘 동작한다.
- 이를 위해 상당한 노력이 있다.
예를 들어 사소한 거 하나라도 하위버전에서 동작하지 않으면 변경하지 않음 - REST는 웹의 진화에 지속적으로 영향을 주고 있다.
Host 헤더 추가, 길이 제한, URI 리소스 정의하는 방법 등
애초에 HTTP, URI 명세를 만드는 사람 중 하나가 REST API를 만든 사람임
'네트워크 > HTTP' 카테고리의 다른 글
HTTP 메서드 (0) | 2021.09.13 |
---|---|
HTTP와 서버 (0) | 2021.08.21 |
상태코드 (0) | 2021.08.18 |
HTTP 메시지 구조 (0) | 2021.08.13 |
HTTP의 기본 구조 (0) | 2021.08.12 |