이전과 달리 최근 서버는 웹 브라우저를 비롯하여 모바일 어플리케이션을 비롯하여 새로운 어플리케이션 계속해서 생성되고 있습니다. 그렇기에 서버는 다양한 플랫폼과 통신을 할 수 있어야 합니다. 이러한 변화에 대응하기 위해 서버는 새로운 디자인 패턴이 필요하게 되었고, REST(Representational safe transfer)가 등장하였습니다.

REST는 자원에 대한 CRUD 요청을 resource와 method로 표현하여 전달하는 방법입니다. 이를 활용해서 자원을 전송받아 나의 웹 브라우저 혹은 모바일 디바이스 등에서 보거나(GET), 생성(POST), 수정(PUT), 삭제(DELETE)를 해줄 수 있습니다. 이러한 REST의 설계 규칙을 준수한 시스템을 RESTful이라고 합니다.

REST는 몇 가지 특징을 갖습니다.
- uniform interface: 초반부에 언급했던 것처럼 http 표준을 따른다는 전제 하에 다양한 플랫폼과 통신이 가능합니다. 이는 URI에 대한 요청을 통일하여 수행하는 아키텍처 스타일이기에 가능합니다.
- stateless : 서버는 요청 간에 개별성을 갖습니다. 그렇기 때문에 서버는 일관성을 가질 수 있습니다. REST를 활용하면 높은 자유도를 가질수 있으며, 구현하는 것이 간단합니다.
- cacheable : REST는 기존의 http를 사용하기 때문에 웹의 기존 인프라를 사용할 수 있습니다. 그렇기에 caching 기능도 활용이 가능합니다. 그렇기에 Last-Modified Tag, E-Tag를 통한 caching 구현이 가능하고 이로 인해 효율적인 대용량의 요청의 처리가 가능해집니다.
- client-server Architecture : 서버는 클라이언트에게 필요한 자원을 가지고 있습니다. 서버는 클라이언트에게 API를 제공할 수 있으며, 클라이언트는 사용자 인증, 세션 및 로그인 등을 직접 관리하는 역할을 수행합니다. 이렇게 서버와 클라이언트를 구분함으로써 서버와 클라이언트의 의존성을 낮춰줍니다.
- self-descriptiveness : REST는 요청 메시지만 보여도 직관적으로 어떤 행위를 하는지에 대해 알 수 있습니다.
- layered system : REST는 다중 계층으로 구성되어질 수 있습니다. 이러한 구성은 보안, 사용자 인증, 로드 밸런싱, 암호화 등을 하는 계층을 추가해줌으로써 구조적으로 유연함을 상승시킬 수 있습니다.
참고자료
https://www.redhat.com/ko/topics/api/what-is-a-rest-api
REST API(RESTful API, 레스트풀 API)란 - 서버, 구현, 사용법
REST API(RESTful API)란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻합니다. api 서버, rest api 구현 및 사용법을 설명합니다.
www.redhat.com

읽어주셔서 감사합니다. 오늘은 크리스마스 이브입니다.. 내일은 크리스마스네요..
내일은 Retrofit에 대해 글을 작성할 예정입니다.

내일은 그냥 토요일일 뿐이니까요...
'코딩 토막 지식' 카테고리의 다른 글
| [Android] .gitignore 사용하기 (0) | 2022.02.24 |
|---|---|
| 쿠키 / 세션 / 토큰에 대해 (0) | 2022.01.14 |
| CORS (Cross-Origin Resource Sharing)란? (0) | 2021.12.23 |
| 애자일(Agile) 방법론이란? (0) | 2021.11.16 |
| [Android/kotlin] list와 mutableList (0) | 2021.09.27 |