네트워크/HTTP

REST API

필리힐리 2021. 8. 20. 17:23

https://youtu.be/RP_f5dMoHFc

 

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)
    서버에서 코드를 클라이언트로 보내서 실행할 수 있어야함

1번

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