REST
정의
- 어떤 자원에 대해 CRUD(생성,읽기,수정,삭제) 연산을 수행하기 위하여 URI(Resource)로 GET,POST 등을 이용하여 요청을 보내고, 요청에 의한 자원은 특정한 형태로 표현.
🤷♀️URI와 URL의 차이
- URI : 인터넷 상 자원의 위치
- URL : 인터넷 상의 자원을 식별하기 위한 문자열 구성
=> URI는 _ URL을 포함한다.
+) REST API는 REST의 특징을 지닌 서비스 API를 구현한 것.
REST 특징
1. 서버- 클라이언트 구조
- 자원을 제공하는 쪽 Server
- 자원을 요청하는 쪽 Client
비즈니스 로직 처리 및 저장을 '서버'가 맡고, 사용자 인증, context(세션, 로그인 정보) 등을 직접 '클라이언트'가 관리 등 분업.
- 이로 인해 서로 간의 의존성이 내려감.
2. Stateless (무상태)
- HTTP 프로토콜도 무상태, REST 또한 무상태성을 가짐.
- 서버는 각각의 요청을 완전히 별개라고 인식하여 처리.
- 클라이언트는 (세션,쿠키)와 같은 context를 서버에 저장하지 않는다.
3. Cacheable(캐시 처리 가능)
- 캐싱 기능을 적용하여 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않게 됨
=> 전체 응답시간/성능/서버의 자원 이용률이 향상
4. Layered System(계층화)
- REST Server는 다중 계층으로 구성이 가능하다.
-> 보안, 로드밸런싱, 암호화, 사용자 인증 등을 추가하여 구조상 유연성을 줄 수 있음
-> 로드밸런싱, 공유 캐시 등으로 확장성과 보안성 또한 향상시킬 수 있다.
5. Code-On-Demand
- 반드시 충족할 필요는 없음.
- 서버로부터 스크립트를 받아 클라이언트에서 실행.
6. 인터페이스의 일관성
- URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행해야 한다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
-> 특정 언어나 기술에 종속되지 x
RESTful 이란?
REST의 설계 규칙을 잘 지켜 설계된 API를 RESTful한 API라고 한다.
📣 즉, 'RESTful'은 위의 REST 원리(특징)를 따르는 시스템을 지칭한다.
RESTful의 목적
- 이해하기 쉽고 사용하기 쉬운 REST API를 제작을 목표
-> 일관적인 컨벤션을 통하여 API의 이해와 호환성을 높이는게 주 목표이다.
🤦♂️ RESTful 하지 못한 경우,,?
ex) CRUD 기능을 전부 POST로 처리한 API 등
출처
99C0RN 의 블로그를 참조하였습니다.