수천 개의 시스템이 인터넷을 통해 자신을 노출하기를 원했지만, 각자 맞춤형 RPC 프로토콜을 구축했기 때문에 어떤 클라이언트도 그중 두 개와 동시에 통신할 수 없었다. 장애물은 지능이나 대역폭이 아니라 각 서비스에 특화된 인터페이스였다.

필딩의 박사 학위 논문은 최소한의 조건이 획일적 인터페이스임을 보여주었다. 즉, URI로 자원을 식별하고, 표현을 통해 자원을 조작하며, 메시지를 자기 서술적으로 유지하고, 하이퍼미디어를 상태의 엔진으로 사용하는 것이며, 이는 클라이언트-서버, 무상태, 캐시라는 기존 제약 위에 층층이 쌓인다.

REST는 새로운 동사를 발명하는 대신 HTTP의 일반 동사를 재사용했기 때문에, 페이지를 가져올 수 있는 클라이언트는 API도 호출할 수 있었다. 그렇기 때문에 REST가 웹 API의 기본이 되어 RPC와 CORBA 스타일을 대체했다.

HTTP의 동사와 자원 주소를 인터페이스로 재사용한다.

획일적 인터페이스는 하나의 일반 클라이언트와 라이브러리 세트가 모든 REST API에 대해 작동하게 하여 통합 비용을 무너뜨린다.

REST는 정의하기보다 제약하며 HTTP 위에 구축되기 때문에, 배포하는 데 새로운 프로토콜이나 스택이 필요하지 않았다.

무상태성과 캐싱은 미들웨어가 호출 사이에 호출자가 누구인지 서버가 알 필요 없이 요청을 확장할 수 있게 한다.

하이퍼미디어를 상태의 엔진으로 사용하면 클라이언트가 각 엔드포인트를 하드코딩하는 대신 제공 기능을 발견할 수 있다.

이미 어디에서나 작동하는 것에서 도출된 표준은 그 도달 범위를 물려받는다. 때로는 가장 큰 설계 결정은 추가하기를 거부하는 제약이다.

필딩의 박사 학위 논문은 2000년에 출판되었고 REST는 공개 및 내부 웹 API의 지배적인 스타일이 되어 SOAP 스타일 RPC를 대체했다. 이후 REST는 관례들(OpenAPI, 그리고 종종 하이퍼미디어를 충분히 활용하지 않는 HTTP 위의 CRUD 해석)을 획득했으며, 일부는 가장 엄격한 하이퍼미디어 형태가 거의 구현되지 않았다고 주장하지만, 획일적 인터페이스라는 아이디어가 승리했다.

근거 확인하기

출처

  1. Representational State Transfer (REST), Fielding Dissertation Chapter 5 Roy T. Fielding / University of California, Irvine · ics.uci.edu
  2. Representational state transfer Wikipedia · en.wikipedia.org