Representational State Transfer
표현(HTTP URL), 상태(HTTP Method), 전달
REST란 아키텍쳐 스타일의 제약조건을 모두 만족하는 시스템
- Client-Server
- Stateless
- Cache
- Uniform Interface
- Layered System
- Code-On-Demend
Level0
RPC 기반 Remode Procedure Call, 주고받는건 XML (Client - Server Model)
HTTP의 특성
- Client가 Server에 Request를 보내고, Server가 Client에 Response를 보내는 구조
- Stateless - 모든 요청은 요청에 필요한 모든 정보를 가지고 있어야 한다
계층으로 구성 가능해야 한다 - Server측에서 gateway나, 암호화, 로드벨런싱을 하는 중간 단계가 추가되어도 Client는 상관없어야 함
Representation의 형태는 content-type으로 결정됨
Level1
리소스 도입 - 단일 리소스와 통신하는게 아니라 개별 리소스와 통신을 함
Resource가 하나 이상의 유일한 특정 주소인 URI로 식별되는지?
Level2
GET, PUT, POST등 Method사용
- HTTP Method로 CRUD를 표현해야 한다
- 안전한 오퍼레이션과, 안전하지 않은 오퍼레이션 간의 분리(멱등성, )
메세지는 스스로를 설명해야한다
Cache - GET은 매번 같은 결과를 만들기때문에 캐싱이 가능하다
Level3
HATEOAS
- 클라이언트가 요청을 할때 요청에 필요한 URI를 Response에 담아서 보내는것
- 하이퍼링크를 통해서 애플리케이션의 상태가 전이된다
Code On Demand
- 서버가 네트워크를 통해 클라이언트에 프로그램을 전달하면 그 프로그램이 클라이언트에서 실행될 수 있어야 한다 - javascript
Method와 Status Code 를 용도에 맞게 사용하여야 하고 HTTP 헤더와 Lihk를 신경쓰면 RESTful한 서비스를 설계할 수 있다.
Reference
'Back-end' 카테고리의 다른 글
MVC 패턴 (0) | 2021.05.27 |
---|---|
DTO, VO vs DAO (0) | 2021.05.25 |
댓글