웹 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 Architecture로써 REST를 발표
웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용하는 분산 하이퍼미디어시스템을 위한 sw 아키텍처의 한 형식
즉, Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐 (리소스 지향 아키텍처)
HTTP POST , http://www.dongguk.edu/users/ 👉 리소스: URI로 표현
{
"users":{
"name":"chloe" 👉 메세지: 디테일한 내용
}
}
메서드
HTTP 메서드를 사용(CRDU에 해당하는 POST, GET, DELETE, PUT 사용)
유니폼 인터페이스(Uniform Interface)
HTTP Protocol 표준을 따라 안드로이드, iOS 플랫폰이든, 특정 언어나 기술에 종속되지 않고 모든 플랫폼에 사용가능(모든 플랫폼에 사용 가능한 느슨한 결합 구조)하며 URI로 지정한 리소스에 대한 조작이 가능한 아키텍처 스타일
무상태성(Stateless)
HTTP 위에 구현되어 HTTP와 같이, 사용자나 클라이언트의 컨택스트를 서버쪽에 유지 하지 않음. API 서버는 들어오는 요청만 단순 처리하면 됨 -> 구현 단순
Cacheable
HTTP 위에 구현되어 웹에서 사용하는 기존의 인프라를 그대로 활용 가능
사용방법
HTTP GET을 "Last-Modified”와 같이 보냄
-> 304 Not Modified을 리턴하면 클라이언트는 자체 캐쉬에 저장된 값을 사용하게 됨
자체 표현 구조(Self-descriptiveness)
Method + URI로 이루어져 직관적으로 이해 가능한 구조
클라이언트 서버 구조 (Client-Server 구조)
REST 서버: API 제공 / 클라이언트: 사용자인증, 컨택스트 관리
-> 각 역할이 확실히 구분되어 서로의 개발에 있어서 의존성이 줄어듦
RESTful system이란, 위 REST 아키텍쳐의 특징을 따르것을 말함
안드로이드에서 통신 시 자주 사용하는 라이브러리다. 이는 Java, Android용 REST 클라이언트다. 이 라이브러리를 사용하면 REST 기반 웹 서비스를 통해 비교적 쉽게 JSON을 검색하고 업로드할 수 있다. 내부적으로는 데이터 직렬화를 통해 변환을하고 OkHttp 라이브러리를 통해 HTTP 처리를 한다!