REST(Representational State Transfer) 설계 원칙

KangHo Lee's avatar
Nov 26, 2024
REST(Representational State Transfer) 설계 원칙

REST 설계 원칙

  1. 클라이언트-서버 구조 (Client-Server Architecture)
      • 클라이언트와 서버는 명확하게 분리되어야 합니다.
      • 클라이언트는 사용자 인터페이스를 관리하고, 서버는 데이터 저장 및 로직을 관리합니다.
      • 이 구조는 각 구성 요소가 독립적으로 발전할 수 있도록 합니다.
  1. 무상태성 (Statelessness)
      • 각 요청은 독립적이며, 서버는 클라이언트의 이전 요청 상태를 저장하지 않습니다.
      • 클라이언트는 필요한 모든 정보를 각 요청에 포함시켜야 합니다.
      • 이는 서버의 확장성과 단순성을 높이는 데 기여합니다.
  1. 캐시 가능 (Cacheable)
      • 응답은 캐시 가능해야 합니다.
      • 적절한 HTTP 헤더를 사용하여 응답이 캐시 가능한지 여부를 명시해야 합니다.
      • 이는 네트워크 상의 불필요한 트래픽을 줄이고 성능을 향상시킵니다.
  1. 일관된 인터페이스 (Uniform Interface)
      • 모든 리소스는 동일한 방식으로 접근되고 조작되어야 합니다.
      • 일관된 인터페이스는 간단함과 가독성을 높이며, 클라이언트와 서버 간의 상호작용을 예측 가능하게 합니다.
      • 이 원칙은 네 가지 제약 조건을 포함합니다:
        • 자원 식별을 위한 URI: 모든 리소스는 고유한 URI로 식별됩니다.
        • 표현을 통한 조작: 리소스 상태는 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 조작됩니다.
        • 자기 설명적 메시지: 각 메시지는 그 자체로 충분한 정보를 포함하고 있어야 합니다.
        • 하이퍼미디어 (HATEOAS): 클라이언트는 응답 내의 하이퍼링크를 통해 동적으로 리소스와 상호작용할 수 있습니다.

세부 규칙

1. 슬래시 구분자 ( / )는 계층 관계를 나타내는데 사용합니다.
2. URI 마지막 문자로 슬래시 ( / )를 포함하지 않습니다.
  • 즉 URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용되어야 하며 URI가 다르다는 것은 리소스가 다르다는 말입니다.
3. 하이픈 ( - )은 URI 가독성을 높이는데 사용합니다.
4. 밑줄 ( _ )은 URI에 사용하지 않습니다.
5. URI 경로에는 소문자를 사용합니다.
6. 파일확장자는 URI에 포함하지 않습니다.
 
Share article

devleekangho