REST API에 대해서
REST API
REST는 REpresentational State Transfer 의 약자로 자원을 이름으로 구분하고 주고받는 일체의 행위
를 말합니다.
REST의 구성
REST는 3가지 요소로 구성되어있습니다.
- 자원
- 모든 자원에는 고유한 ID가 존재하고 이를 통해 구별하게 됩니다.
- 행위
- Client는 HTTP Method를 통해 Server에 자원과 관련된 행위를 요청하게 됩니다.
- 표현
- Server는 Client의 요청에 대해 알맞은 해답을 보냅니다.
REST의 특징
REST에는 크게 6개의 특징이 있습니다.
- Uniform (유니폼 인터페이스)
유니폼 인터페이스는 지정한 자원에 대한 동작을 통일되고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일을 의미합니다.
이 부분을 설명하기 위해 흔히 사용되는 URL과 비교해보겠습니다.
- 기존 URL : myblog.com/user?id=1
- 유니폼 인터페이스 : myblog.com/user/1
기존의 URL은 URL 뒤에 파라미터를 붙여서 원하는 자원에 접근할 수 있었습니다.
이는 각 파라미터가 무엇을 가리키는지 명확히 알 수 있는 방법이긴 했으나 URL을 호출한 뒤 어떠한 작업을 할지에 대해서도 파라미터로 같이 넘겨주어야 했습니다.
반면 유니폼 인터페이스는 HTTP Method를 이용하기 때문에 어떤 작업을 수행하는지는 GET, POST, PUT, DELETE등을 통해 알 수 있어
간편해지고 하나의 URL로 여러 행위를 요청할 수 있다는 장점이 있습니다.
-
Stateless (무상태성)
무상태성이란 작업을 위한 상태정보를 별도의 세션이나 쿠키로 관리하지 않는다는 뜻입니다.
이 덕분에 서비스가 가벼워지고 서버에서 불필요한 행위를 하지 않기 때문에 구현이 단순해집니다. -
Cacheable (캐쉬 가능)
REST의 가장 큰 장점으로 HTTP라는 웹표준을 그대로 사용하기 때문에 웹에서 사용하는 인프라가 그대로 사용가능합니다.
따라서 HTTP가 가진 캐싱기능이 적용 가능하며 Last-Modified태그나 E-Tag를 통해 캐싱구현이 가능합니다.
- Last-Modified : HTTP 헤더에 담긴 서버가 알고 있는 가장 마지막 수정된 날짜와 시각으로 저장된 리소스에 대한 유효성 검사자로 이용할 수 있습니다.
-
Self-descriptiveness (자체 표현 구조)
REST API의 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있습니다. -
Client - Server 구조
REST 서버는 API제공, 클라이언트는 사용자 정보나 컨텍스트 등을 관리하는 구조로 역할이 명확하게 구분되어 있어 서로간의 의존성이 줄어듭니다. -
계층형 구조
REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드밸런싱, 암호화 계층을 추가해 구조적 유연함을 둘 수도 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 해줍니다.
REST API 디자인 가이드
REST API 설계 시 가장 중요한 항목은
- URI는 정보의 자원을 표현해야한다.
- 자원에 대한 행위는 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