시작하기 전에
저번에 HTTP, HTTPS를 알아봤으니 이번엔 그 대표적인 방법 REST를 알아봅시다.
구글, 카카오, 네이버 등에서도 다양한 서비스를 REST API로 제공하고 있습니다.
REST(REpresentational State Transfer)
HTTP 통신을 활용하기 위해 고안된 아키텍처다.
Representational은 인터넷상의 자원을 URI(Uniform Resource Identifier)로 나타낼 수 있음을 의미한다.
클라이언트는 URI로 표현된 자원을 HTTP 메서드를 이용해 CRUD(Create, Read, Update, Delete) 연산을 할 수 있다.
State Transfer는 요청받은 자원의 상태를 전달하는 것을 의미한다.
결국 REST는 자원을 명시해 연산을 수행하고 상태를 주고받는 것이다.
다음과 같은 특징이 있다:
- 일관된 인터페이스: 자원을 나타내는 URI를 HTTP 메서드로 조작하는 일관된 인터페이스를 사용한다. 따라서 HTTP를 따르는 모든 플랫폼에서 REST를 사용할 수 있다.
- 클라이언트-서버 구조: 클라이언트는 서버에 요청을 보내고 기다리며, 서버는 자원을 가지고 있으며 클라이언트의 요청에 응답한다.
- 무상태성: 앞서 살펴봤듯이 서버가 클라이언트의 상태를 저장하지 않는다.
- 캐싱 가능: 클라이언트는 이전에 서버로부터 받은 응답을 저장 및 재사용하는 캐싱(caching)을 할 수 있다. 캐싱은 클라이언트의 많은 요청으로부터 서버 부하를 줄여 주고, 클라이언트는 비교적 빨리 응답을 받을 수 있게 한다.
- 자체 표현 구조: REST API는 자원, 행위, 표현으로 구성되어 있어 REST API 메시지를 보고 어떤 요청을 하는지 알 수 있다.
- 계층형 구조: REST 서버는 다중 계층으로 구성되어 있어 보안, 암호화와 같은 계층을 추가해 서버에 대한 기능을 유연하게 확장할 수 있다.
이러한 특징들과 함께 HTTP를 기반으로 하기 때문에 별도의 인프라를 구축할 필요가 없다는 장점이 있다.
하지만 HTTP 메서드를 활용해 자원에 대한 연산을 처리하므로 동작이 한정적이라는 단점이 있다.
※ URI, URL, URN이란
※ URI, URL, URN이란
URI(Uniform Resource Identifier)
- 인터넷에 있는 자원을 나타내는 주소다. 인터넷에서 요구하는 기본 조건으로 인터넷 프로토콜에 항상 붙어 다닌다.
- URI의 하위 개념으로 URL, URN이 있다.
URL(Uniform Resource Locator)
- 인터넷에서 자원의 위치를 알 수 있는 규약이다.
- 웹 사이트 주소와 인터넷의 모든 자원을 나타낼 수 있다.
URN(Uniform Resource Name)
- 자원의 위치 정보가 아닌 실제 자원을 특정한다.
REST API는 무엇일까?
REST API
API(Applicaiton Programming Interface)는 다른 소프트웨어에 서비스를 제공하기 위한 소프트웨어 인터페이스다.
REST API는 REST를 기반으로 한 인터페이스이다.
- 자원의 식별은 URI로 하고,
- 자원에 대한 행위(처리)는 HTTP 메서드로 나타내며,
- 전달되는 데이터는 JSON 또는 XML 등으로 표현한다.
작동 방식:
- 클라이언트가 URI로 식별한 자원에 대해 HTTP 메서드를 사용해 REST API로 요청한다.
- REST API가 HTTP 요청 메시지에 실려 서버로 전달된다.
- 서버에서는 수신한 HTTP 요청 메시지를 바탕으로 요청 사항을 확인해 처리하고 HTTP 응답을 반환한다. 응답에는 요청에 대한 처리 성공 여부와 정보를 포함한다.
- 클라이언트는 자원에 대한 정보를 JSON 또는 XML 형태로 포함한 응답 메시지를 수신한다.
※ RESTful이란
※ RESTful이란
REST 규칙을 지키며 API를 제공하는 서비스를 의미한다.
REST API를 최대한 RESTful하게 사용하려면 다음과 같은 규칙을 준수해야 한다:
- 자원에 대한 행위는 HTTP 메서드로 나타내며, HTTP 메서드나 행위에 대한 표현이 URI에 들어가면 안 된다.
- HTTP 메서드는 명시적이어야 한다. 즉, 요청하려는 목적에 맞게 HTTP 메서드를 사용해야 한다.
POST 메서드로 Create뿐 아니라 Update 같은 연산을 하면 명시적이라고 할 수 없다. - URI 경로는 슬래시(/)로 계층 관계를 표현하며, URI 마지막에 슬래시가 들어가면 안 된다.
- URI 경로에는 언더바(_)를 사용하면 안 되고, 소문자 사용을 지향한다.
그럼 이제 HTTP 메서드를 정리해보자.
HTTP 메서드
주로 사용하는 메서드:
- POST: 데이터를 생성할 때 사용
- GET: 데이터를 조회할 때 사용
- PUT: 데이터를 갱신할 때 사용
- DELETE: 데이터를 제거할 때 사용
HTTP 메서드는 다음과 같이 CRUD 연산과 매칭된다.
- POST - Create(생성)
- GET - Read(조회)
- PUT - Update(갱신)
- DELETE - Delete(삭제)
네트워크는 여기서 마무리이다.
'📖 Computer Science > 네트워크' 카테고리의 다른 글
[CS Study] 네트워크 (3) - HTTP (0) | 2025.05.07 |
---|---|
[CS Study] 네트워크 (2) - TCP와 UDP (0) | 2025.05.07 |
[CS Study] 네트워크 (1) - 네트워크 계층 (0) | 2025.05.06 |