CS스터디

[SW] REST API

Codult 2024. 1. 29. 17:24
728x90

REST API

REST를 기반으로 만들어진 API

 

REST (Representational State Transfer)

자원을 이름으로 구분하여, 해당 자원의 상태를 주고받는 모든 것을 의미한다.

즉, HTTP URI를 통해 자원(resource)을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD 오퍼레이션을 적용하는 것을 의미한다.

 

REST 구성 요소

  1. 자원: HTTP URI
  2. 자원에 대한 행위: HTTP Method (POST, GET, PUT, DELETE, PATCH 등)
  3. 자원에 대한 행위의 내용: HTTP Message Pay Load

REST의 특징

  1. 서버-클라이언트 구조 (Server-Client)
    : 서버와 클라이언트의 엄격한 분리와 독립성을 유지해야 한다.
  2. 무상태 (Stateless)
    : 클라이언트의 상태나 세션 정보를 서버에서 관리하지 않는다.
  3. 캐시 처리 가능 (Cacheable)
    : 서버의 응답이 캐시 가능하다면, 클라이언트는 서버에 요청하여 응답을 받는 대신 캐시에서 바로 응답을 받을 수 있다.
  4. 계층 구조 (Layered System)
    : 서버와 클라이언트 간의 미들웨어를 추가하여 보안, 로드밸런싱, 공유 캐시 등의 기능을 추가할 수 있다.
  5. 인터페이스 일관성 (Uniform Interface)
    : 서버와 클라이언트 간의 상호작용이 단순화되고 의존성이 낮아진다는 장점이 있다.

REST의 장단점

장점

  • REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다. (HTTP 프로토콜을 사용함)
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • REST API가 의도하는 바를 명확하게 나타낼 수 있다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • HTTP Method 형태가 제한적이다.
  • 표준이 존재하지 않는다. (공식화된 API 디자인 가이드가 존재하지 않음)
  • 브라우저를 통해 테스트할 일이 많은 서비스라면, 전문성이 요구된다. (URI보다 header 정보의 값을 처리해야 하므로)
  • 구형 브라우저에서 호환이 되지 않는다.

 

REST API 설계 규칙

  • URI는 동사보다 명사를, 대문자보다 소문자를 사용해야 한다.
  • 마지막에 슬래시(/)를 포함하지 않는다.
  • 언더바 대신 하이픈(-)을 사용한다.
  • 파일확장자는 URI에 포함하지 않는다.
  • 행위(post, get, delete...)를 포함하지 않는다.

RESTful

REST API 설계 규칙을 올바르게 지킨 시스템을 RESTful하다고 한다.

 

 

References

https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

728x90