Rest
- REpresentational State Transfer
- 웹의 기존 기술과 HTTP 프로토콜을 활용 → 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
- 서버와 클라이언트 사이의 통신 방식 중 하나
<aside>
⚡ 자원: 해당 소프트웨어가 관리하는 모든 것
표현: 그 자원을 표현하기 위한 이름 (DB의 학생 정보가 자원이면, Students를 자원의 표현으로 정함)
상태전달: 데이터가 요청되는 시점에 자원의 상태를 전달
</aside>
Rest의 개념
- CRUD 연산을 수행하기 위해 URI(Resource)로 GET, POST 방식(Method)을 사용하여 요청보내
- 요청을 위한 자원은 특정한 형태 (Representation of Resource)로 표현
- CRUD → Create, Read, Update, Delete
Rest의 구성요소
- 자원 : URI
- 모든 자원에는 고유한 ID가 존재하고 이 자원은 서버에 존재
- Client는 URI를 이용해 자원을 지정하고, 해당 자원의 상태에 대한 조작을 서버에 요청
- 행위 : Method
- method로 GET POST PUT PATCH DELETE 존재
- 표현: Representation of Resource
- 클라이언트와 서버가 데이터를 주고받는 형태
- JSON / XML을 통해 데이터를 주고 받는것이 일반적
Rest 특징
- 서버 - 클라이언트의 구조
- 자원이 있는 쪽이 서버 / 자원을 요청하는 쪽이 클라이언트
- 서버가 하는 일
- 클라이언트가 하는 일
- 사용자 인증 작업, 세션 및 로그인 정보 등 직접 관리
- 무상태 (stateless) → HTTP 특징으로 나왔던 거. 여기서 Rest가 HTTP와 접점이 있다는걸 알 수 있다
- 클라이언트의 정보를 서버에 저장하지 않는 것
- 세션이나 쿠키정보같은 클라이언트의 정보를 저장하지 않는다는 말
- 불필요한 정보를 관리하지 않고
- 일관성이 유지된다는 장점이 있다
- 무엇보다도 정보를 저장하지 않으니가 용량부담에서도 자유롭겠지
- 캐시 처리 기능
- 계층 구조
- 클라이언트는 REST API 서버만 호출한다
- REST 서버는 다층 계층으로 구성될 수 있다
- 암호화를 위한 계층 추가 가능
- 프록시, 게이트웨이같은 네트워크 기반의 중간매체 사용가능
- 하지만 클라이언트는 서버와 직접 통신하는지, 중간에서 통신하고 있는지 알 수 없다