HTTP API 와 REST API는 사실 거의 같은 의미로 사용됩니다. 그런데 디테일하게 들어가면 차이가 존재합니다. HTTP API는 상당히 넓은 의미로 사용됩니다. 반면에 REST API는 HTTP API에 여러가지 제약 조건이 추가 됩니다.
HTTP API
- HTTP (Hyper Text Transfer Protocol)
HTTP는 웹 환경에서 정보를 주고받기 위한 프로토콜입니다. HTTP API는 HTTP라는 통신 규칙으로 소통하는 API 입니다. 즉, HTTP를 사용해서 서로 정해둔 스펙으로 데이터를 주고 받으며 통신하는 것을 말합니다.
💡 HTTP를 사용하지 않는 API가 있나?
- 저사양/저전력 환경에 적합한 MQTT, CoAp 프로토콜을 사용하는 API 가 존재합니다.
- 예시로, IoT 어플리케이션을 개발할 때 IoT 애플리케이션과 통신할 수 있는 API를 말할 수 있습니다.
REST API
- REST (Representational State Transfer)
REST란 네트워크 아키텍처 스타일입니다. 아키텍처 스타일이란, 네트워크 자원을 정의하고 처리하는 방법 전반을 말합니다. REST API는 자원의 표현으로 상태를 전달하는 아키텍처로 만든 API입니다. REST는 HTTP를 잘 활용하기 위한 원칙이 존재합니다. REST API는 REST의 원칙을 준수해서 만든 API입니다.
💡 REST API를 설계하는 중심 규칙은 무엇이 있나?
- 자원 : URI로 자원을 표현해야합니다.
- 행위 : 자원에 대한 행위는 HTTP Method로 표현되어 합니다.
- 표현 : 응답 자원의 상태를 JSON, XML 등의 형태로 나타내야 합니다.
RESTful API Guide
확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 합니다.
1️⃣ 정보의 자원을 표현
document, collection, store, controller 4가지 방식으로 자원을 표현할 수 있습니다. document란, 1개의 객체를 나타내는 것으로 일반적으로 단수명사로 나타나지며 collection 뒤에 나타나게 됩니다. collection은 resource(document)들의 집합입니다. 일반적으로 복수 명사를 사용합니다.
GET /sports/soccer/players/13
위와 같은 URI를 보면 sports, players는 collection으로 나타나지고 있고 soccer, 13은 도큐멘트로 URI를 구성하고 있습니다.
+) 그 외 자원 표현 방법들
- 명사형을 사용합니다.
- 소문자를 사용합니다.
- 밑줄 ( _ ) 은 사용하지 않습니다.
- 하이픈 ( - )을 사용합니다.
2️⃣ 자원에 대한 행위 표현
GET /members/delete/1 (X)
DELETE /members/1. (O)
URI는 자원을 표현하는데 중점을 두어야합니다. insert, delete와 같이 URI에 HTTP Method가 들어가면 안 됩니다. 또한, 행위에 대한 표현도 들어가서는 안 됩니다. 행위를 표현하고자 할 때는 HTTP Method (GET, POST, PUT, DELETE) 로 표현합니다.
3️⃣ 경로에 대한 표현
/university/sookmyung/ (x)
/university/sookmyung/ (o)
슬래시 구분자 ( / ) 는 계층 관계를 나타내는데 사용합니다. URL 마지막에는 슬래시 구분자를 포함하지 않습니다. 또한, 경로 부분 중 변하는 부분은 유일한 값으로 대체합니다. (ex. id 값)
참고
API, HTTP API, REST API 차이
REST API란, HTTP Method
'[AWS] > STUDY' 카테고리의 다른 글
[중요][참고] HTTP API와 REST API 이란!! (85) | 2023.12.21 |
---|---|
[AWS] MSSQL 클러스터 방법 (0) | 2022.10.14 |
[AWS] Endpoint란 (0) | 2022.09.28 |
[AWS] 트랜잭션 로그 (1) | 2022.09.13 |
[AWS] Route53 도메인 연결 (0) | 2022.08.15 |
[AWS] Route53이란 (0) | 2022.08.12 |
[AWS] Cloud Front의 정의 (0) | 2022.08.12 |
[AWS] 리눅스 파일 시스템 (0) | 2022.08.12 |
댓글