[네트워크] REST

Yoon Uk·2023년 5월 1일
0

네트워크

목록 보기
30/34
post-thumbnail

REST란?

RESTRepresentational State Transfer의 약자로, 웹 서비스의 아키텍처 스타일입니다.
REST자원(resource)을 중심으로 설계되며, 자원의 상태(state)표현(representation)하고 전송(transfer)하는 방식입니다.

특징

REST는 다음과 같은 특징을 가집니다.

  • 자원은 고유한 식별자(URI)로 표현됩니다.

  • 자원의 상태는 JSON, XML 등의 형식으로 표현됩니다.

  • 클라이언트와 서버는 HTTP 메소드(GET, POST, PUT, DELETE 등)를 통해 자원에 대한 CRUD(Create, Read, Update, Delete) 연산을 수행합니다.

  • 클라이언트와 서버는 서로 독립적이며, 상태를 공유하지 않습니다. (stateless)

  • 하이퍼미디어(HATEOAS)를 통해 자원 간의 연관 관계를 표현합니다.

    • HATEOAS (Hypermedia as the Engine of Application State)는 REST 애플리케이션 아키텍처의 제약사항입니다.
      하이퍼미디어를 통해 리소스 간의 관계를 나타내는 방법입니다.
      이는 클라이언트가 서버가 응답에서 동적으로 제공하는 하이퍼링크를 통해 서버와 상호 작용한다는 것을 의미합니다.
      이를 통해 클라이언트가 리소스와 그들의 관계를 어떻게 상호 작용하는지에 대한 사전 지식이 필요 없기 때문에 더 유연하고 검색 가능한 API가 가능합니다.

REST의 6원칙

  1. Uniform Interface
    클라이언트와 서버가 통신할 때 일관된 인터페이스를 사용합니다.
    예를 들어, HTTP 메소드와 URI를 표준화하고, 응답 형식을 명시합니다.

  2. Stateless
    서버는 클라이언트의 상태 정보를 저장하지 않습니다. 즉, 각 요청은 독립적이고 완전한 정보를 포함해야 합니다.

  3. Cacheable
    서버는 클라이언트에게 응답이 캐시 가능한지 여부를 알려줘야 합니다. 캐시를 사용하면 네트워크 부하와 지연 시간을 줄일 수 있습니다.

  4. Client-Server 분리
    클라이언트와 서버는 서로 분리되어 있어야 합니다. 이렇게 하면 각각의 구성 요소가 독립적으로 개선하고 확장할 수 있습니다.

  5. Layered System
    서버는 여러 계층으로 구성될 수 있습니다.
    예를 들어, 로드 밸런싱, 캐싱, 보안 등의 기능을 추가할 수 있습니다. 클라이언트는 서버의 내부 구조를 알 필요가 없습니다.

  6. Code on Demand (optional)
    서버는 필요에 따라 클라이언트에게 실행 가능한 코드를 전송할 수 있습니다.
    예를 들어, 자바스크립트나 앱릿 등을 사용할 수 있습니다.

RESTful API란?

RESTful API란 웹에 존재하는 다양한 리소스에 대해 고유한 URI를 부여하고, HTTP 메소드를 통해 해당 리소스의 생성, 조회, 수정, 삭제 등의 작업을 수행할 수 있게 하는 API입니다.

RESTful API의 특징

RESTful API는 다음과 같은 특징을 가집니다.

  • 균일한 인터페이스
    서버는 클라이언트에게 리소스의 표현과 메타데이터를 전달하고, 클라이언트는 표현을 통해 리소스를 조작할 수 있습니다. 또한 서버는 표현에 하이퍼링크를 포함하여 클라이언트가 다른 관련 리소스를 동적으로 발견할 수 있게 합니다.

  • 무상태성
    서버는 클라이언트의 이전 요청과 독립적으로 각 요청을 처리합니다. 즉, 서버는 클라이언트의 상태 정보를 저장하지 않고, 클라이언트는 각 요청에 필요한 모든 정보를 담아야 합니다.

  • 캐시 가능성
    서버는 클라이언트에게 응답이 캐시 가능한지 여부를 알려주어, 클라이언트나 중간자가 캐시된 응답을 재사용할 수 있게 합니다. 이를 통해 서버의 부하를 줄이고 네트워크 트래픽을 감소시킬 수 있습니다.

  • 계층화 시스템
    클라이언트는 서버와 직접 통신하는지 아니면 중간 계층을 거치는지 알 수 없습니다. 서버는 보안, 로드 밸런싱, 캐싱 등의 기능을 위해 여러 계층의 서버로 구성될 수 있습니다.

RESTful API의 장점

RESTful API를 사용하면 다음과 같은 장점이 있습니다.

  • 플랫폼과 독립적으로 사용할 수 있습니다.
    HTTP 프로토콜을 기반으로 하기 때문에, 어떤 종류의 클라이언트나 서버와도 호환될 수 있습니다.

  • 확장성과 유연성이 높습니다.
    리소스와 표현 방식을 분리하고, 균일한 인터페이스를 제공하기 때문에, 기존의 구조를 변경하지 않고도 새로운 기능을 추가하거나 수정할 수 있습니다.

  • 이해하기 쉽고 관리하기 편합니다.
    리소스에 대한 명확한 식별과 메소드에 대한 일관된 정의를 통해, API의 목적과 동작 방식을 쉽게 파악할 수 있습니다.

0개의 댓글