Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

은학의 코딩 일기장

[컴퓨터 네트워크] Rest API 본문

cs

[컴퓨터 네트워크] Rest API

<Eunhak> 2024. 8. 28. 16:58

REST (Representational State Transfer)

REST는 웹 서비스 설계의 아키텍처 스타일 중 하나로, 클라이언트와 서버 간의 통신을 위한 규칙을 정의합니다. REST는 자원을 이름으로 구분하고 그 자원에 대한 행위를 HTTP 프로토콜을 통해 요청(Request)하는 방식입니다. 여기서 자원은 URI로 표현되고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용해 자원에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.

REST의 주요 개념:

  • 자원 (Resource): URI로 식별되는 대상입니다. 예를 들어, https://api.example.com/users/123는 특정 사용자 자원을 나타냅니다.
  • 표현 (Representation): 자원의 상태를 표현하는 방식입니다. JSON, XML, HTML 등이 있습니다.
  • 상태 전이 (State Transfer): 클라이언트는 자원에 대한 요청을 통해 필요한 정보를 서버로부터 받고, 이 정보를 통해 상태를 변경할 수 있습니다.

RESTful API

RESTful API는 REST 원칙을 준수하여 설계된 API를 말합니다. 이 API는 클라이언트가 HTTP 요청을 통해 서버 자원에 접근하고, 해당 자원에 대한 상태를 전이시킬 수 있도록 합니다. RESTful API는 명확하고 일관된 방식으로 자원에 접근할 수 있는 구조를 제공합니다.

RESTful API의 특징:

  • 자원 기반 URI: 각 자원은 고유한 URI로 식별됩니다.
  • HTTP 메서드 사용: 자원에 대한 작업은 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용해 수행됩니다.
  • 무상태성 (Statelessness): 서버는 각 요청을 독립적으로 처리하며, 클라이언트의 상태를 유지하지 않습니다.
  • 표현의 일관성 (Representation Consistency): 요청에 대해 자원의 현재 상태를 일관된 형식(JSON, XML 등)으로 반환합니다.

⭐️ REST 제약 조건

REST 아키텍처는 다음과 같은 6가지 제약 조건을 따릅니다. 이 조건들을 충족해야만 RESTful하다고 할 수 있습니다.

  1. 클라이언트-서버 구조 (Client-Server Architecture):
    • 클라이언트와 서버는 서로 분리되어 있어야 합니다. 클라이언트는 사용자 인터페이스를 관리하고, 서버는 데이터 저장 및 비즈니스 로직을 처리합니다. 이 구조를 통해 클라이언트와 서버의 독립적인 확장이 가능해집니다.
  2. 무상태성 (Statelessness):
    • 각 요청은 독립적이어야 하며, 서버는 클라이언트의 상태를 저장하지 않습니다. 모든 필요한 상태 정보는 요청에 포함되어야 합니다. 이렇게 하면 서버의 확장성이 좋아집니다.
  3. 캐시 가능 (Cacheability):
    • 응답 데이터는 캐시가 가능해야 하며, 서버 응답은 이 응답이 캐시 가능한지 여부를 명시해야 합니다. 이를 통해 클라이언트는 불필요한 서버 요청을 줄일 수 있습니다.
  4. 계층화 시스템 (Layered System):
    • 시스템은 여러 계층으로 구성될 수 있으며, 클라이언트는 자신과 상호작용하는 서버 외에 다른 중간 서버를 알 필요가 없습니다. 이 계층 구조는 보안, 로드 밸런싱, 캐싱 등의 기능을 통해 시스템의 확장성을 향상시킵니다.
  5. 일관된 인터페이스 (Uniform Interface):
    • REST는 리소스와 상호작용하기 위한 일관된 인터페이스를 정의합니다. 이 일관성은 시스템 아키텍처를 단순하게 하고, 다양한 클라이언트가 서버와 상호작용할 수 있게 합니다. 이 인터페이스는 다음을 포함합니다:
      • 자원의 식별: 각 자원은 URI를 통해 고유하게 식별됩니다.
      • 자원 조작을 위한 표준 HTTP 메서드 사용.
      • 자기 서술적 메시지: 요청 및 응답은 자신이 어떤 데이터를 포함하고 있고, 어떻게 처리되어야 하는지 명확히 설명해야 합니다.
      • 하이퍼미디어(링크)를 통한 상태 전이: 클라이언트는 응답 내의 링크를 통해 다음에 취할 수 있는 작업을 결정할 수 있습니다.
  6. 코드 온 디맨드 (Code on Demand, 선택 사항):
    • 서버는 클라이언트가 실행할 수 있는 코드를 제공할 수 있습니다. 예를 들어, 자바스크립트 코드가 클라이언트에 전송되어 실행될 수 있습니다. 이 제약 조건은 선택 사항입니다.