REST API 와 RESTful API 차이는 그냥 부모, 자식 간의 관계인듯 하다

이번에 동료 개발자들과 점심을 먹던 중 사소한 주제에 대한 토론(?)이 있었습니다.

바로 REST API 와 RESTful API 입니다.

사실 저도 REST API 나 RESTful API 모두 동일하다 생각하고 있었습니다.

하지만 엄밀히 말하면 동일한 개념은 아니며, 그 차이점을 설명할 수 있어야 된단 생각이 들어 포스팅합니다 :)

 

REST API 란?

REST API 란 Representational State Transfer API의 약자로, 분산 시스템(ex. MSA)간의 자원을 표현하고 전달하기 위한 아키텍처 스타일입니다.

  • REST API 특징
    • 자원(URI) : 서비스의 모든 것을 나타내는 개념. (ex. 주문, 결제, 회원 등)
    • 표현(Representation) : json, xml 등 다양한 형식으로 표현 가능
    • 상태(State) : HTTP 응답 상태 코드(2xx[성공], 3xx[리다이렉트], 4xx[클라이언트 에러], 5xx[서버 에러])
    • 표준화된 인터페이스(Uniform Interface) : HTTP 요청 메소드(GET, POST, PUT, DELETE)

정리하자면, REST API 는 자원, 표현, 상태, 표준 인터페이스를 통해 클라이언트와 서버 간의 통신을 구현하는 아키텍처 입니다.

즉 REST API 는 REST 아키텍처 스타일을 따르는 API를 의미합니다.

 

  • REST API 원칙
    • 클라이언트/서버 구조 : 클라이언트와 서버는 독립적으로 구성되어 있습니다.
    • 무상태성(Stateless) : 서버가 클라이언트의 상태를 유지하지 않고 각 요청을 완전히 독립적으로 처리하는 방식입니다. 즉, 서버는 클라이언트의 이전 요청이나 상태에 대해 알지 못하며, 
    • 캐시 처리 가능(Cacheable) : 서버 응답 시간 개선을 위해 캐시를 처리할 수 있습니다.
    • 계층화 시스템(Layered System) : 클라이언트와 서버 사이에 여러 개의 중간 계층(레이어)을 두고 통신하는 방식입니다. 시스템의 확장성, 보안성, 성능 등을 향상시킵니다.
    • 인터페이스 일관성(Uniform Interface) : 위의 REST API 의 특징 참고
    • 자기 서술적 메시지(Self-descriptive Messages) : 위의 REST API 의 특징 참고

 

RESTful API란?

RESTful API 는 REST API 아케텍처를 적용하여 설계된 API를 의미합니다. REST API 를 상속 했다고 보시면 될 것 같습니다.

 

그렇다면 차이점은?

* 원칙이나 특징은 똑같습니다. 하지만 RESTful API 는 REST API 아키텍처 기반으로 좀 더 구체적으로 설계되었고, 더 엄격하게 REST API 를 따른다고 말할 수 있습니다.

 

+ Recent posts