본문 바로가기
취준/CS 기술면접 준비

RESTful API란?

by 윤숩 2025. 1. 5.
728x90
728x90

 

RESTful API란?

 

- REST(Representational State Transfer) 아키텍처 스타일을 따르는 API(Application Programming Interface)를 말합니다.

- REST는 클라이언트와 서버 간의 통신을 설계하는 방식으로, 웹의 장점을 최대한 활용하도록 설계되었습니다.

- RESTful API는 주로 HTTP 프로토콜을 기반으로 동작하며, 간단하고 직관적인 방식으로 데이터를 전송 또는 조작할 수 있도록 설계됩니다.


 

✔️ REST의 주요 개념

:  REST는 자원(Resource), HTTP 메서드(Method), URI를 사용해 시스템을 설계합니다.

 

1. 자원(Resource)

- REST는 데이터를 자원으로 정의합니다.

- 각 자원은 고유한 URI(Uniform Resource Identifier)로 식별됩니다.

예: https://api.example.com/users/123
users: 자원의 집합
123: 특정 자원의 식별자

 

2. HTTP 메서드(Method)

- RESTful API는 HTTP 메서드를 사용해 자원에 대한 작업을 정의합니다. 

HTTP 메서드 설명 예시
GET 자원의 조회 (Read) GET /users/123 (사용자 정보 조회)
POST 새로운 자원의 생성 (Create) POST /users (새 사용자 생성)
PUT 기존 자원의 전체 수정 (Update) PUT /users/123 (사용자 정보 전체 수정)
PATCH 기존 자원의 부분 수정 (Partial Update) PATCH /users/123 (사용자 일부 정보 수정)
DELETE 자원의 삭제 (Delete) DELETE /users/123 (사용자 삭제)

 

3. URI 설계 원칙

- URI는 명사를 사용해 자원을 표현합니다.

계층 구조를 반영하여 설계합니다.
올바른 예: /users/123/orders/456
잘못된 예: /getUserOrders

 


 

✔️ RESTful API의 특징

 

1. 무상태성(Stateless)

- 클라이언트와 서버 간 통신은 무상태(stateless)입니다.

- 서버는 요청 간의 상태 정보를 저장하지 않으며, 모든 요청에는 필요한 모든 정보(인증 토큰, 요청 데이터 등)가 포함됩니다.

 

2. 자원 기반 설계(Resource-Oriented Design)

- API는 작업 중심이 아니라 자원 중심으로 설계됩니다.

- 자원은 고유 URI로 식별되고, HTTP 메서드를 통해 작업이 정의됩니다.

 

3. 표준화된 인터페이스(Uniform Interface)

- 요청의 구조와 응답 형식이 일관됩니다.

- 일반적으로 JSON 형식을 사용합니다.

 

4. 캐싱(Caching)

- 자원의 상태가 자주 변경되지 않는 경우, 클라이언트는 서버에서 받은 데이터를 캐싱할 수 있습니다.

 

5. 계층화(Layered System)

- 클라이언트와 서버 사이에 프록시, 로드 밸런서, 캐싱 서버를 추가하여 시스템을 계층화할 수 있습니다.

 


 

 ✔️ RESTful API의 장단점

 

◾장점

1. 단순함과 직관성

- HTTP 프로토콜을 사용하므로 학습 곡선이 낮습니다.

- URI와 HTTP 메서드만 이해하면 사용할 수 있습니다.

 

2. 유연성과 확장성

- 클라이언트와 서버가 독립적으로 동작합니다.

- 다양한 플랫폼과 프로그래밍 언어에서 쉽게 사용할 수 있습니다.

 

3. 웹 표준 준수

- REST는 HTTP 표준을 따르므로 웹 환경과의 통합이 쉽습니다.

 

◾ 단점

1. 무상태성으로 인한 추가 작업

- 각 요청에 필요한 모든 데이터를 포함해야 하므로, 네트워크 사용량이 증가할 수 있습니다.

 

2. 복잡한 자원 설계

- 대규모 API 설계 시 URI 구조와 자원의 관계를 명확히 정의하는 것이 어렵습니다.

 

3. 실시간 데이터 처리에 부적합

- REST는 주로 요청-응답 방식에 기반하므로, 실시간 업데이트가 필요한 경우 WebSocket등의 대안을 사용해야 합니다.

 

728x90
728x90

댓글