✔️ REST와 RESTful
REST란?
- Representational State Transfer (대표적인 상태 전달)
- 월드 와이드 웹(www)과 같은 분산 하이퍼 미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
- 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 클라이언트와 서버 간 통신 방식
- HTTL URI를 통해 자원을 명시하고 HTTP Method를 통해 자원을 처리하도록 설계됨
즉, 자원 기반의 구조(ROA) 설계의 중심에 자원이 있고 HTTP Method를 통해 자원을 처리하도록 설계된 아키텍처 - HTTP와 REST 모두 Stateless한 성격을 가지며 HTTP는 Stateless한 프로토콜, REST는 Stateless한 설계 구조 (아키텍처)
- 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여함
- REST 구성 요소
- 자원
모든 자원에는 고유한 ID가 존재하고, 이 자원은 서버에 존재함
자원을 구별하는 ID는 HTTP URI이며
클라이언트는 URI를 이용해서 자원을 지정하고 해당 자원의 상태에 대한 조작을 서버에 요청 - 행위 (HTTP Method)
HTTP 프로토콜의 Method인 GET, POST, PUT, DELETE, HEAD 등을 제공해 서버에 행위를 요청 - 표현
클라이언트가 자원의 상태에 대한 조작을 요청하는 서버는 이에 적절한 응답을 보내게 되어 이를 통해 데이터를 주고 받음
이때 하나의 자원은 JSON, XML, TEXT, RSS 등의 여러 형태의 표현으로 나타날 수 있음
- 자원
- REST의 특징
- Client-Server Architecture
- Stateless : HTTP 세션과 같은 컨텍스트 저장소에 상태 정보를 저장하지 않음
- Resource Oriented Architecture : 리소스 기반의 복수형 명사 형태의 정의를 권장
- Cacheable Ability
- Layered System
- Code-On-Demand
- Uniform Interface : HTTP 표준만 맞는다면, 어떤 기술(특정 언어나 기술에 종속 받지 않음)도 가능한 인터페이스 스타일
REST API란?
- REST를 기반으로 서비스 API를 구현한 것
- 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있도록 함
- HTTP 표준을 기반으로 구현하므로 HTTP를 지원하는 프로그램 언어로 서버를 구현할 수 있음
- REST API 설계 기본 규칙
- URI는 정보의 자원을 표현해야 함
그러므로 동사보다는 명사를 사용하며 영어 소문자 복수형을 사용하여 표현
세부 자원에는 id를 붙임 - 자원에 대한 행위는 HTTP Method(POST-Create, GET-Select, PUT-Update, DELETE-Delete)로 표현함
그러므로 URI에 HTTP Method가 들어가면 안됨 - 슬래시 구분자는 계층 관계를 나타내는데 사용
- URI 마지막 문자로 슬래시를 포함하지 않음
- 하이픈은 URI 가독성을 높이는데 사용
- 밑줄은 URI에 사용하지 않음
- URI 경로에는 소문자가 적합
- 파일 확장자는 URI에 포함하지 않음
- 리소스 간에 연관관계가 있는 경우 계층 구조를 사용
- ID는 하나의 특정 자원을 나타내는 고유값
- JSON, XML과 같은 메시지 포맷에 존재
- URI는 정보의 자원을 표현해야 함
RESTful이란?
- REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용하는 용어
- REST 원리를 따르는 시스템을 RESTful이라는 용어
- 퍼포먼스 향상 보다는 일관적인 컨벤션을 통해 API의 이해도 및 호환성을 높이고자 함
'Tech Interview > Network' 카테고리의 다른 글
[Network] Socket (0) | 2024.01.24 |
---|---|
[Network] Stateful과 Stateless (0) | 2024.01.24 |
[Network] 웹 통신의 큰 흐름 (0) | 2024.01.24 |
[Network] DNS (0) | 2024.01.23 |
[Network] 쿠키와 세션 (0) | 2024.01.17 |