Android 앱을 개발하면서 서버와 통신을 하게 되는데 그때 Rest API를 많이 사용한다. 앱 개발을 하면서 Rest를 사용하였고 주변에서도 Rest라는 용어를 많이 사용하지만 누군가 Rest가 무엇이냐고 물었을 때 "클라이언트와 서버 사이에 값을 주고 받는 것" 라는 두리뭉실한 이야기 밖에 해 줄수 없다는 것에 부끄러움을 느끼며, 블로그에 정리 하게되었다.
* Rest란?
Rest(Representational state transfer)를 있는 그대로 해석하면 표현을 통한 상태의 전이 라고 할수 있다. 여기서 표현이란 Http 요청 메시지와 거기에 해당하는 리소스의 내용을 전달하는 Http 응답 메시지로 간단히 설명하면 클라이언트와 서버간에 메시지로 서로의 상태변화를 공유하자는 것이다. 이런 Rest이론을 따르는 시스템구조를 Restful 시스템이라고 부른다.
* Rest의 설계 원칙
1) 모든 자원은 URI(URL)로 관리
2) 클라이언트의 상태와 기능은 서버로 요청한 자원으로 파악
3) URI(URL)는 클라이언트와 서버 간의 자원을 가리키는 유일한 인터페이스
4) 클라이언트의 요청 정보는 서버에 저장되지 않음
서버내의 자원은 URL(Uniform Resource Locator) 혹은 URI(Uniform Resource Identifier)을 이용하여 관리한다.
URL 형식 : 서버 주소 + 서비스 이름+ 자원
* 장점
- URI(URL)형태로 자원을 관리 하기 떄문에 느슨한 결합(loose coupling)이 가능하며, 속도 또한 빠르다.(URI(URL)형태로 자원을 관리 하기 떄문에 자주 사용하는 자원에 대해 캐싱 처리가 가능하다.)
- Http 프로토콜을 사용하여 패킷의 변화 없이 그래도 하용할수 있다.
- 결합도가 낮아 확장성이나 배포가 편리하다.
- 거의 모든 운영체제의 지원이 가능하며 별도의 라이브러리 배포없이 사용이 가능하다.
- 서버와 클라이언트의 역할이 독립되어 있어 변경이나 확장이 용이하다.
* 단점
- 공급자가 같더라도 서버별로 Rest API사이에 일관성이 없다.
- Rest 모델에 적합하지 않은 형태의 URI(URL) 체계가 존재한다
- 표준화된 구성이나 정의가 없다.
이론적으로 Rest에 대해 간단히 정리하였고, 나중에 시간이 된다면 더 정리해 놓아야 할것 같다.
'Android' 카테고리의 다른 글
[Android] 생체인증 (0) | 2021.04.13 |
---|---|
[Android] ADT 14버전에서 Switch case문 오류 문제(isLibrary프로젝트의 경우) (0) | 2017.11.01 |
[Android] 권장 이미지 형식 (0) | 2017.03.03 |
[Android] 디버깅 Class (0) | 2017.02.27 |
[Android] 화면 고정 (0) | 2017.02.27 |