RESTfulAPI

KanDohyung·2024년 12월 14일

개념정리

목록 보기
15/28

REST(REpresentational State Transfer) 원칙을 준수해 설계된 앱 프로그래밍 인터페이스(App Programming Interface)
REST는 클라이언트-서버 통신에서 리소스를 중심으로 한 설계 원칙을 기반으로 HTTP 프로토콜을 활용해 상태정보와 리소스를 교환함

RESTful : 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것 → 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높임

REST의 기본 원칙

  1. 리소스 중심
    • API는 리소스를 기반으로 설계됨
    • 리소스는 URL로 표현되며 보통 명사를 사용함
      /user, /products, /orders
  1. HTTP 메서드 활용
    • GET, POST, PUT, PATCH, DELETE
  1. 무상태성(Statelessness)
    • 클라이언트와 서버 간의 요청은 독립적, 서버는 클라이언트의 이전 요청 상태 저장하지 않음
  1. 계층적 시스템 (Layered System)
    • RESTful 시스템은 클라이언트와 서버 사이에 중간계층 둘 수 있음
      → 시스템의 확장성과 보안성을 높임
  1. 캐시 가능
    • HTTP 헤더에 캐시 관련 정보를 포함하여 클라이언트가 응답 데이터를 캐시할 수 있도록 설계 가능
      → 서버 요청을 줄이고 성능을 최적화 가능
  1. 인터페이스 일관성
    • 모든 리소스는 동일한 방식으로 표현되고, 클라이언트는 리소스에 접근하는 데에 표준화된 인터페이스를 사용함

장점

  • 표준화된 설계 : HTTP 프로토콜을 기반으로 하기 때문에, 표준화된 설계로 이해와 구현이 용이함
  • 확장성 : REST 계층적 설계와 무상태성 원칙은 확장성을 높이고, 다양한 클라이언트와 서버가 상호작용 할 수 있도록 함
  • 성능 최적화 : 캐싱, 효율적인 데이터 구조를 통해 네트워크와 서버 부하를 줄임
  • 플랫폼 독립성 : HTTP를 기반을 하므로 브라우저, 모바일 앱, IoT 등 다양한 플랫폼에서 사용 가능

단점

  • 무상태성의 한계 : 클라이언트의 상태를 유지하지 않으므로, 요청마다 필요한 정보를 모두 보내야함 → 오버헤드 발생 가능
  • 대규모 데이터 전송 비효율 : 복잡한 데이터 전송 비효율
  • 실시간 데이터 처리의 부족 : REST는 양방향 통신에 적합하지 않음
  • 엔드포인트 관리 : 리소스가 많을 수록 엔드포인트의 설계와 관리가 복잡해짐

주의사항

  • 명확하고 일관된 URL
  • 적절한 상태코드 반환
  • 필요한 데이터만 반환
  • 보안 강화 : AUthentication, Authorization 필수

0개의 댓글