REST API
REST 란,
- REST는 HTTP 통신 방식 중 하나이다. REST는 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미한다.
- 자세히 말하면, HTTP URI를 이용하여 자원을 명시하고, HTTP Method를 이용해서 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다
구성요소
- 자원: URI
- 해당 자원에 대한 고유 ID가 있으며, 이 자원은 서버에 존재
- 자원을 구분하는 것은 '/groups/:group_id'와 같은 HTTP URI이다.
- 행위: HTTP Method
- HTTP Method를 사용하며, GET, POST, PUT, DELETE, PATCH를 제공
- 표현
- Client가 자원의 상태에 대한 조작 요청하면 Server는 이에 대한 응답을 보냄
- REST는 자원을 JSON, XML, TEXT, RSS 등 여러 형태로 나타남
장단점
- 장점
- HTTP 프로토콜의 인프라 그대로여서, 별도 인프라가 필요 없음
- 모든 플랫폼에서도 사용이 가능
- REST API 메시지가 의도하는 바를 나타내므로 파악이 쉽다.
- 서버와 클라이언트의 역할을 명확히 분리
- 단점
필요성
- 애플리케이션 분리 및 통합
- 다양한 클라이언트(브라우저, 안드로이드, IOS 등) 에서도 통신 가능, 이러한 멀티플랫폼에 대한 지원이 필요성이 생김
특징
- Server-Client 구조
- 자원이 있는 쪽이 Server, 요청하는 쪽을 Client
- 서로 간 의존성이 줄어듬
- Stateless
- HTTP 프로토콜을 따라서 REST 역시 무상태성을 갖음
- Client의 context를 Server에 저장하지 않음
- 세션과 쿠키와 같은 정보를 신경쓰지 않아 구현이 단순
- Server는 이에 따라 각각의 요청을 별개의 것으로 인식 및 처리
- 이전 요청과 다음 요청은 연결되지 않음
- Server의 처리 방식에 일관성 부여하지 않고, 자유도 높아짐
- Cacheable(캐시 처리 가능)
- HTTP 프로토콜에서 사용하던 캐싱 기능 적용 가능
- 대량의 요청을 효율적으로 처리 가능
- 캐시를 이용하여 응답시간이 빨라지고, 전체 응답시간, 성능, 서버 자원 이용률 향상 가능
- Layered System(계층화)
- Client는 REST API Server 호출
- Server는 다중 계층으로 구성
- Code-On-Demand
- Server로부터 스크립트를 받아 Client 실행
- Uniform Interface
- URI로 지정한 리소스에 대해 한정적인 인터페이스로 수행
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
HTTP Method
멱등성
- 멱등성이란, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 말한다.
GET
- 단순한 조희를 이용하기 위해 사용하는 Method(CRUD 중 Read)
- 여러 번 수행해도 단순 조회만 이루어지므로, 같은 효과를 기대할 수 있음
- 멱등성과 안전한 메소드가 성립
POST
- 새로운 리소스를 생성하기 위해 사용하는 Method(CRUD 중 Create)
- 하위 리소스들을 생성하는데 사용
- 멱등성 보장되지 않고, 안전한 메소드도 아님
PUT
- 요청한 리소스에 있는 자원으로 대체하는 Method(CRUD 중 Update or Create)
- 전체에 대해서 대상을 저장하기도 하고, 변경을 하기도 함
- 데이터가 없으면, 생성이 될 것이고 아니면 데이터는 수정이 되는 방식
- 이에 따라, 멱등성이 보장
PATCH
- 부분적인 수정을 적용하기 위해 사용하는 Method(CRUD 중 Update)
- PUT Method는 해당 자원의 상태를 모두 알아야 전체가 대체되는 반면 PATCH의 경우에는 부분적인 수정이 가능하므로 전체를 알 필요는 없음
- 이에 따라, 멱등성이 보장이 되지 않음
DELETE
- 리소스의 삭제를 위해 사용하는 Method(CRUD 중 Delete)
- 해당 요청에 대해 리소스가 삭제가 진행이 됨
- 이미 삭제가 되었든, 삭제를 진행하던 동일하기 때문에 멱등성이 보장
참조