우아한 테크톡 관련된 유튜브 강의 정리 내용입니다.
정확한 내용을 학습하고 싶으면 강의 링크를 참고하시면 됩니다.
REST 란?
- REpresentational : 표현
- State : 상태
- Transfer : 전달
자원의 표현 = HTTP URI
상태 전달 = HTTP Method
웹의 장점을 최대한 활용할 수 있는 아키텍처
RESTful?
아키텍처 스타일의 제약 조건을 모두 만족하는 시스템
REST 아키텍쳐의 제약 조건
- Client - Server (클라이언트 서버 구조)
- Stateless (무 상태성)
- Cache (캐시 처리 가능)
- Uniform Interface(유니폼 인터페이스)
- Identification of Resources
- Manipulation of Resources through Representation
- Self-Descriptive Messages
- Hypermedia As The Engine Of Application State
- Layered System (계층형 구조)
- Cade-On-Demand (옵션으로 사용)
Richardson Maturity Model
Level 0
HTTP를 RPC를기반으로 원격 통신을 위한 터널링 매커니즘으로 사용됨
POX(Plain Old XML)를 주고 받는 단순한 RPC 스타일 시스템
※ RPC(Remote Procedure Call) 란?
별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스간 통신 기술
Server - Client
- Client가 Server에게 Request를 보내고, Server가 Client에게 Response를 보내는 구조
- 서버는 API 제공과 제공된 API를 이용하여 비지니스 로직을 처리하거나 저장하는 역활
- 클라이언트는 사용자 인증이나 컨텍스트 등을 관리하는 역활
Stateless
- 클라이언트와 서버의 통신에는 상태가 없어야 합니다.
- 모든 요청은 필요한 모든 정보를 담고 있어야 합니다.
Layered System
- 계층으로 구성이 가능해야 합니다.
- 클라이언트 입장에서는 서버만 호출합니다.
- 서버는 다중 계층으로 구성될 수 있습니다.
Manipulation of Resources through Representation
- Representation의 형태는 content-type으로 결정이 됩니다.
- text/html, application/xml, application/json 등등....
Level1 - Resources
- 리소스를 도입한다.
- 모든 요청을 단일 서비스 엔드포인트로 보내는 것이 아니라 개별 리소스와 통신한다.
Identification of Resources
- 자원은 유일하게 식별가능해야 한다
- Resource가 하나 이상의 유일한 특정 주소인 URI로 식별되는지
- 아직 POST Method로만 Request를 보내기 때문에 URI나 RequestBody로 어떤 동작을 할지 알려줘야 합니다.
Level2 - HTTP Methods
- GET, PUT, DELETE 등 다른 메소드를 사용할 수 있습니다.
- Level 0 , 1 보다 HTTP의 사용법에 가능한 가깝게 사용합니다.
Manipulation of Resources through Representation
- HTTP Method로 표현을 담아야 합니다.
- 안전한 오퍼레이션과 안전하지 않은 오퍼레이션 간의 강한 분리를 제공해야 합니다.
Self-Descriptive Messages
- 메시지는 스스로를 설명해야 합니다.
- 메시지는 요청 작업을 완료할 수 있도록 응답을 이해할 수 있도록 충분한 정보들을 HTTP Method, Status Code, Header 등을 활용하여 전달 해야합니다.
Cache
- 일반적인 서비스에서 60~80% 가량의 트랜잭션이 Select와 같은 조회성 트랜잭션
- Get은 얼마든지 호출해도 매번 같은 결과를 만들어내므로 캐싱이 가능하다.
Level3
- HATEOAS(Hypermedia As The Engine Of Application State) 도입
- 클라이언트가 전적으로 서버와 동적인 상호작용이 가능합니다.
- 클라이언트가 서버로부터 어떠한 요청을 할 때, 요청에 필요한 URI를 응답에 포함시켜 반환하는 것입니다.
Hypermedia As The Engine Of Application State
- 하이퍼링크를 통해서 애플리케이션의 상태가 전이되어야 합니다.
- HTTP Response에 다음 Action이나 관계되는 리소스에 대한 HTTP Link를 함께 리턴
- 요청 URI가 변경되더라도 클라이언트에서 동작으로 생성된 URI를 사용함으로써, 클라이언트가 URI 수정에 따른 코드를 변경하지 않아도 됩니다.
Cade-On-Demand
서버가 네트워크를 통해 클라이언트에 프로그램을 전달하면 그 프로그램이 클라이언트에서 실행될 수 있어야 합니다.
'Computer Science > 테크톡 정리' 카테고리의 다른 글
[CS 정리] 트랜잭션 정리 (0) | 2021.09.14 |
---|---|
[CS 정리] 프레임워크, 라이브러리, API 정리 (0) | 2021.09.09 |
[CS 정리] JDBC, SQLMAPPER, ORM (0) | 2021.08.24 |
[CS 정리] OSI 7 Layer (0) | 2021.08.23 |
[CS 정리] 교착상태(Deadlock) (0) | 2021.08.22 |