Skip to content

Latest commit

 

History

History
61 lines (43 loc) · 2.83 KB

REST API.md

File metadata and controls

61 lines (43 loc) · 2.83 KB

REST API

  • REpresentational State Transfer라는 용어의 약자입니다.
  • 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 발표되었습니다.

REST의 구성

  • Resource (자원) - URI
  • Verb (행위) = HTTP Method
  • Representations (표현)

REST의 특징

Uniform (유니폼 인터페이스)

  • Uniform Interface는 URI로 지정한 Resource에 대한 조작을 통일하고
    한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다.

Stateless (무상태성)

  • REST는 무상태성을 갖습니다.
  • 다시 말해, 작업을 위한 상태 정보를 따로 저장하여 관리하지 않습니다.
  • 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 단순히 들어오는 요청만을 처리하면 됩니다.
  • 이로 인해, 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않아 구현이 단순해집니다.

Cacheable (캐시 가능)

  • REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹 표준을 그대로 사용하여,
    웹에서 사용하는 기존 인프라를 그대로 활용할 수 있다는 것입니다.
  • 따라서, HTTP가 가진 캐싱 기능을 적용할 수 있습니다.
  • HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현이 가능합니다.

Self-descriptiveness (자체 표현 구조)

  • REST API 메시지만 보고도 이를 쉽게 이해할 수 있는 자체 표현 구조로 되어있다는 뜻입니다.

Client - Server 구조

  • REST 서버는 API 제공,
    클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로
    각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로 간의 의존성이 줄어듭니다.

계층형 구조

  • 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있습니다.
  • 또한, Proxy, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있습니다.

REST API 디자인 가이드

REST API 설계시 가장 중요한 항목은 다음 2가지로 요약할 수 있습니다.

  • URI는 정보의 자원을 표현해야 합니다.
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현합니다.

URI 설계시 주의할 점

  • 슬래시 구분자(/)는 계층 관계를 나타내는데 사용합니다.

  • URI 마지막 문자로 슬래시(/)를 포함하지 않습니다.

  • 하이픈(-)은 URI 가독성을 높이는데 사용합니다.

  • 언더바(_)는 URI에 사용하지 않습니다.

  • URI 경로에는 소문자가 적합합니다.

  • 파일 확장자는 URI에 포함시키지 않습니다.