REST API에 대해서

1 minute read

REST API

REST는 REpresentational State Transfer 의 약자로 자원을 이름으로 구분하고 주고받는 일체의 행위를 말합니다.

REST의 구성

REST는 3가지 요소로 구성되어있습니다.

  • 자원
    • 모든 자원에는 고유한 ID가 존재하고 이를 통해 구별하게 됩니다.
  • 행위
    • Client는 HTTP Method를 통해 Server에 자원과 관련된 행위를 요청하게 됩니다.
  • 표현
    • Server는 Client의 요청에 대해 알맞은 해답을 보냅니다.

REST의 특징

REST에는 크게 6개의 특징이 있습니다.

  1. Uniform (유니폼 인터페이스)
    유니폼 인터페이스는 지정한 자원에 대한 동작을 통일되고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일을 의미합니다.
    이 부분을 설명하기 위해 흔히 사용되는 URL과 비교해보겠습니다.
  • 기존 URL : myblog.com/user?id=1
  • 유니폼 인터페이스 : myblog.com/user/1

기존의 URL은 URL 뒤에 파라미터를 붙여서 원하는 자원에 접근할 수 있었습니다.
이는 각 파라미터가 무엇을 가리키는지 명확히 알 수 있는 방법이긴 했으나 URL을 호출한 뒤 어떠한 작업을 할지에 대해서도 파라미터로 같이 넘겨주어야 했습니다.

반면 유니폼 인터페이스는 HTTP Method를 이용하기 때문에 어떤 작업을 수행하는지는 GET, POST, PUT, DELETE등을 통해 알 수 있어
간편해지고 하나의 URL로 여러 행위를 요청할 수 있다는 장점이 있습니다.

  1. Stateless (무상태성)
    무상태성이란 작업을 위한 상태정보를 별도의 세션이나 쿠키로 관리하지 않는다는 뜻입니다.
    이 덕분에 서비스가 가벼워지고 서버에서 불필요한 행위를 하지 않기 때문에 구현이 단순해집니다.

  2. Cacheable (캐쉬 가능)
    REST의 가장 큰 장점으로 HTTP라는 웹표준을 그대로 사용하기 때문에 웹에서 사용하는 인프라가 그대로 사용가능합니다.
    따라서 HTTP가 가진 캐싱기능이 적용 가능하며 Last-Modified태그나 E-Tag를 통해 캐싱구현이 가능합니다.

  • Last-Modified : HTTP 헤더에 담긴 서버가 알고 있는 가장 마지막 수정된 날짜와 시각으로 저장된 리소스에 대한 유효성 검사자로 이용할 수 있습니다.
  1. Self-descriptiveness (자체 표현 구조)
    REST API의 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있습니다.

  2. Client - Server 구조
    REST 서버는 API제공, 클라이언트는 사용자 정보나 컨텍스트 등을 관리하는 구조로 역할이 명확하게 구분되어 있어 서로간의 의존성이 줄어듭니다.

  3. 계층형 구조
    REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드밸런싱, 암호화 계층을 추가해 구조적 유연함을 둘 수도 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 해줍니다.

REST API 디자인 가이드

REST API 설계 시 가장 중요한 항목은

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

이 부분은 위의 유니폼 인터페이스를 설명할 때 했던 것과 밀접한 관련이 있는 내용으로
행위에 대한 표현은 HTTP Method를 통해서만 이루어져야하며(회원을 불러올지 혹은 추가할지, 삭제할지 등)
URI에 작성되는 정보는 자원(회원, 이름 등)에 한정되어야한다는 것 입니다.

출처자료

https://meetup.toast.com/posts/92
https://velog.io/@kjh107704/REST-%EC%84%9C%EB%B2%84-REST-API%EB%9E%80

Categories:

Updated: