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 를 따른다고 말할 수 있습니다.
'Programming > 기타' 카테고리의 다른 글
[사용자 인증] 사용자 인증에서 쿠키란? (0) | 2024.04.09 |
---|---|
HTTP 와 HTTPS 의 차이 (0) | 2024.04.03 |
[mac os] Homebrew 설치 (0) | 2024.04.03 |
[mac os] git 설치 (0) | 2024.04.03 |
[mac os] brew 설치 중 Warning: /opt/homebrew/bin is not in your PATH. 오류 발생 (0) | 2024.04.02 |