[API] REST API 와 RESTful API

지구본욱·2025년 4월 4일

수업이나 인터넷에서 API 관련된 소리를 듣게 되면, REST, RESTful API에 대해서 많이 듣게 된다.
이름이 굉장히 비슷한 이 친구들 . . . 대체 무슨 차이인걸까?

🚀 REST (REpresentational State Transfer)

: REST는 웹 서비스가 어떻게 동작해야 하는 지에 대한 아키텍처 스타일 또는 설계 원칙
: 클라이언트와 서버 간의 상호작용을 규정하며, 여러 가지 원칙들과 제약조건들을 가진다.
: Statelesss와 캐시 가능한 응답을 지향


🛠️ RESTful API

: REST의 원칙을 잘 지켜서 만든 API
: 즉, REST를 웹에 실제로 구현한 API

📌 RESTful API의 특징
URI는 명사 중심 (/users, /posts/1/comments)

HTTP 메서드를 의미에 맞게 사용 (GET: 조회, POST: 생성, PUT: 수정, DELETE: 삭제)

URI에 동사나 쿼리 파라미터 남용하지 않음

ex)

❌ /getUser, /createUser
✅ GET /users, POST /users

상태를 서버에 저장하지 않음 (Stateless)

JSON을 주로 사용


RESTful API의 장점

  1. 표준화된 HTTP 사용
    HTTP 메서드(GET, POST, PUT, DELETE 등)를 의미에 맞게 사용함
    전 세계적으로 익숙한 방식이기 때문에 이해하기 쉽고 일관성 있음

    2. URI를 통해 자원을 명확하게 표현
    자원 중심의 설계 (/users/1 → ID가 1인 사용자)
    직관적인 구조로 API 문서 없이도 어느 정도 파악 가능

    3. 무상태성(Stateless)
    각 요청은 독립적이기 때문에 서버 확장성(Scale-out)에 유리
    세션을 서버에 저장하지 않아 서버 부담이 줄어듦
  2. 클라이언트-서버 구조
    프론트엔드와 백엔드가 명확히 분리되어 유지보수에 용이함
    여러 클라이언트(웹, 모바일 등)에서 같은 API 재사용 가능
  3. 캐싱(Caching) 용이
    HTTP 캐싱 메커니즘 활용 가능 (예: GET 요청 결과를 캐싱)
    서버 부하 감소 및 응답 속도 향상 가능

RESTful API의 단점

  1. 복잡한 관계 표현이 어려움
    REST는 자원 단위로 처리되기 때문에 관계형 데이터(예: 사용자와 주문 간 관계)를 다루기 까다로움
    이를 해결하려면 복잡한 URI 구조 또는 다수의 요청이 필요함
  2. 과도하게 정형화된 URI 설계 요구
    REST 원칙을 엄격히 따르다 보면, 유연성이 떨어질 수 있음
    작은 기능을 위해 전체 설계를 변경해야 하는 경우도 있음
  3. 버전 관리 불편
    URI에 버전을 넣는 방식(/v1/users) 등 다양한 방식이 있지만 일관성 유지가 어려움
  4. 무상태성이 항상 장점은 아님
    인증/인가를 위해 매번 토큰 등을 보내야 하므로 클라이언트 부담 증가
    세션 기반 처리가 필요한 경우 RESTful 구조가 불편함
  5. 실시간 양방향 통신에 부적합
    REST는 기본적으로 요청-응답 구조 → 채팅, 게임, 실시간 알림 같은 기능에는 WebSocket이나 GraphQL Subscriptions이 더 적합
profile
어제보다 1cm라도 나아가는 사람 (위로)

0개의 댓글