본문 바로가기
온라인 멘토와 함께하는 공부/인공지능

REST API란 무엇인가?

by 열공노년 2025. 4. 1.
반응형

🌐 REST API란 무엇인가?

**REST(Representational State Transfer)**는 2000년 로이 필딩(Roy Fielding)이 자신의 박사 논문에서 제안한 웹 아키텍처 스타일입니다.
REST를 따르는 시스템은 웹 기반의 자원(Resource)을 일관된 방식으로 접근하고 조작할 수 있도록 설계됩니다.

이 REST 원칙을 따르는 API를 RESTful API 또는 REST API라고 합니다.


🔧 REST API의 핵심 개념

1. 자원(Resource)

  • 웹에서 접근할 수 있는 데이터 단위 또는 서비스 대상입니다.
  • 예: 게시글, 사용자, 댓글 등
  • 자원은 URL로 표현됩니다.
    예: /posts/1, /users/3

2. HTTP 메서드(Method)

REST는 HTTP 프로토콜의 메서드를 자원에 대한 행위로 해석합니다:

HTTP 메서드
메서드 의미  사용 예
GET 자원 조회 GET /posts (모든 게시글 조회)
POST 자원 생성 POST /posts (새 게시글 생성)
PUT 자원 전체 수정 PUT /posts/1 (1번 게시글 전체 수정)
PATCH 자원 일부 수정 PATCH /posts/1 (1번 게시글 일부 수정)
DELETE 자원 삭제 DELETE /posts/1 (1번 게시글 삭제)

3. 무상태성(Statelessness)

  • 서버는 클라이언트의 상태를 저장하지 않음.
  • 요청마다 독립적이며, 필요한 모든 정보를 포함해야 함.

4. 표현(Representation)

  • 클라이언트는 자원의 표현을 전달받습니다.
  • 보통 JSON 또는 XML 형식이 사용됩니다.
  • 예:
  • { "id": 1, "title": "REST란 무엇인가", "body": "웹을 위한 아키텍처 스타일입니다." }

5. 일관된 인터페이스(Uniform Interface)

REST API는 일관된 URI와 방식으로 접근 가능해야 하며, 다음을 지켜야 합니다:

  • URI는 명사 중심 (/posts, /users)
  • 메서드는 동사 역할 (GET, POST 등)
  • 요청/응답은 표준 형식(JSON 등)

🏗 REST API의 구성 요소 예시

GET /posts/1 HTTP/1.1
Host: jsonplaceholder.typicode.com

응답:

{
  "userId": 1,
  "id": 1,
  "title": "REST API란?",
  "body": "이것은 RESTful 방식으로 구현된 API입니다."
}

✅ REST API의 장점

  • 표준화된 접근 방식 (HTTP 기반)
  • 언어 독립성: 파이썬, 자바, 자바스크립트 등 어떤 언어에서도 접근 가능
  • 확장성: 다양한 자원 추가가 용이함
  • 캐싱 가능성: GET 요청에 대한 응답은 캐싱하여 성능 향상 가능

⚠️ REST의 한계점

  • 너무 복잡한 관계형 데이터 표현에 한계
  • 상태 유지가 필요한 경우에는 어려움 (무상태 원칙)
  • 일관된 에러 처리 및 보안 설계는 별도로 해야 함

🚀 REST API vs 기타 API 스타일

방식 설명 예시

REST 자원 중심, HTTP 기반 /posts/1
SOAP XML 기반의 메시징 프로토콜, 무겁고 보안 강화 SOAPAction 헤더 사용
GraphQL 필요한 데이터만 쿼리 형식으로 요청 가능 query { posts { title } }

📚 결론

REST API는 웹 개발에서 가장 널리 쓰이는 아키텍처 스타일로,
간단하면서도 강력한 방식으로 다양한 클라이언트와 서버 간 통신을 가능하게 해줍니다.
특히 파이썬의 requests, 자바스크립트의 fetch, 모바일 앱의 Retrofit 등 다양한 환경에서 쉽게 구현할 수 있습니다.

 

반응형