REST API

멋진감자·2024년 9월 12일
0

네트워크

목록 보기
2/2
post-thumbnail

REST API

HTTP 기반의 요청-응답 구조로 자원 관리와 상태 비저장성을 특징으로 하는 웹 서비스이다.
Representational State Transfer 원칙을 따르는 모든 API를 의미한다.

REST API vs RESTful API

REST APIRESTful API는 자주 혼용되지만, 실제로는 조금 다른 개념이다.
REST 원칙을 다소 느슨하게 적용해도 REST API라고 부를 수 있는 반면, RESTful API는 REST 원칙을 지대로 구현한 API를 지칭하는 데 더 중점을 둔다.

REST (Representational State Transfer)

이름으로 구분되는(Representational) 자원의 상태(State)를 주고받는(Transfer) 모든 것을 의미한다.

구성 요소

  • 자원(Resource) : HTTP URI
  • 자원에 대한 행위(Verb) : HTTP Method (GET, POST, PUT, PATCH, DELETE)
  • 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load

기본 원칙

  • 클라이언트-서버 구조

    • 클라이언트와 서버가 분리된 구조로 동작한다.
    • 클라이언트는 UI를 담당하고, 서버는 데이터를 처리하고 저장한다.
  • 무상태성(Stateless)

    • 서버는 각 요청을 독립적으로 처리하며, 요청 간에 서버에 클라이언트의 상태가 저장되지 않는다.
    • 각 요청은 필요한 모든 정보를 포함해야 한다.
  • 캐시 가능(Cacheable)

    • 응답은 캐시될 수 있고, 클라이언트는 이를 통해 서버와의 상호작용을 최소화하고 성능을 향상시킬 수 있다.
  • 일관된 인터페이스(Uniform Interface)

    • API는 일관성 있는 인터페이스를 제공해야 한다.
    • REST API에서 중요한 부분은 URI(Uniform Resource Identifier)를 사용해 자원에 접근하는 것이다.
  • 계층화(Layered System)

    • 클라이언트는 서버와 직접 통신하지 않고 중간 서버(예: 로드 밸런서, 프록시)를 통해 통신할 수 있다.

REST API의 장점

  • 확장성: 클라이언트와 서버가 독립적으로 개발 및 배포될 수 있다.

    • 서버에서 데이터를 업데이트해도, 프론트엔드는 데이터를 가져와서 화면에 표시하기만 하면 된다.
    • 반대로 화면 구조가 달라져지더라도, 서버는 그대로 데이터를 제공할 수 있다.
  • 유연성: REST는 다양한 형식(JSON, XML, HTML 등)으로 데이터를 교환할 수 있다.

    • 클라이언트별로 선호하는 형식이 다를 수 있는데, 그저 동일한 API 요청 안에서 형식만 변경하면 된다.
  • 명확한 자원 관리: URL을 통해 자원을 명확하게 정의하고, HTTP 메서드를 통해 자원에 대한 작업을 표현한다.

    • 쇼핑몰을 예로 들어보자. GET /products/1은 ID가 1인 상품 조회, POST /products는 새 상품 등록. PUT /products/1은 ID가 1인 상품의 전체 정보 수정, DELETE /products/1은 상품 삭제라는 점이 명확하게 드러난다.

REST API의 단점

  • 복잡한 요청 처리: 상태 비저장성을 유지하면서 복잡한 요청 간 상호작용을 관리하는 것이 어려울 수 있다.

    • 상태 비저장성이란, 서버가 클라이언트의 이전 요청 상태를 기억하지 않는다는 의미이다.
    • 예를 들어, 장바구니에 담은 물건을 결제할 떄, 서버는 사용자가 이전에 장바구니에 뭘 담았는지 기억하지 않는다.
      따라서 클라이언트는 사용자 ID 등 필요한 정보를 포함하여 요청을 보내야 한다.
      또한 여러 단계의 요청이 연결되어 있는 경우, 이 상태 비저장성 때문에 개발이 비효율적일 수 있다.
  • 대용량 데이터 처리: HTTP 요청이 자주 발생하는 경우, 트래픽이 늘어나 성능 이슈가 발생할 수 있다.

    • 수천 개의 상품 데이터를 한 번에 불러오고, 매번 최신 상태로 유지되어야 한다면 적합하지 않을 수 있다.

그 외 서버-클라이언트 데이터 통신 방식

서버와 클라이언트 간의 데이터 전송을 위한 프로토콜 혹은 기술로, 다양한 상황에 맞춰 사용할 수 있다.

  • TCP/IP Socket: 저수준의 네트워크 통신으로 양방향 연결을 통해 데이터 전송.
  • gRPC: 빠르고 효율적인 바이너리 기반의 원격 프로시저 호출(RPC) 프로토콜, 주로 마이크로서비스 간 통신에 사용.
  • WebSocket: 지속적인 양방향 통신을 지원하는 프로토콜로, 실시간 데이터 전송에 적합.

Summary

REST는 자원을 HTTP URI로 식별하고, HTTP 메서드를 통해 해당 자원에 대한 작업을 정의하는 아키텍처 스타일을 의미하고, REST API는 이 원칙을 기반으로 하는 API 입니다.
가장 큰 특징으로는 클라이언트-서버 구조, 캐셔블, 무상태성 등이 있습니다.
이로 인해 클라이언트 서버는 독립적으로 개발될 수 있어 상호의존성은 낮아지지만 서로의 상태를 저장하지 않아 필요한 모든 정보를 요청에 포함시켜야 한다는 단점도 있습니다.

profile
난멋져

0개의 댓글