REST 란?
먼저 REST API 에서 REST는 Representatinal State Transfer 의 약자로
자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다.
즉, REST 란
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.
REST 구성 요소
1. 자원(Resource) - URI
- 웹 서버가 관리하는 모든 것들을 자원이라고 합니다.
- 자원은 고유한 URI를 통해 식별됩니다.
2. 행위(Verb) - Method
- HTTP 프로토콜의 Method를 사용합니다.
- HTTP 프로토콜은 GET, POST, PUT, PATCH, DELETE의 Method를 제공합니다.
주요 메소드
GET : 서버에서 리소스(데이터)를 요청하는 메소드입니다. 요청한 데이터를 가져와 응답합니다.
POST: 서버에 데이터를 전송하는 메소드입니다. 데이터를 전송하여 서버에서 처리하고, 처리 결과를 응답합니다.
PUT: 서버에 데이터를 업데이트하는 메소드입니다. 요청한 데이터를 서버에 저장하고, 처리 결과를 응답합니다.
DELETE: 서버에서 데이터를 삭제하는 메소드입니다. 요청한 데이터를 서버에서 삭제하고, 처리 결과를 응답합니다.
3. 표현(Representation of Resource)
Client와 Server가 데이터를 주고받는 형태로 JSON, XML, TEXT, RSS 등이 있습니다.
REST의 특징
1. Server-Client(서버-클라이언트 구조)
- 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client
2. Stateless(무상태)
- HTTP 프로토콜은 Stateless Protocol이므로 REST 역시 무상태성을 갖습니다.
- Client의 context를 Server에 저장하지 않습니다.
- Server는 각각의 요청을 완전히 별개의 것으로 인식하고 처리합니다
3. Cacheable(캐시 처리 가능)
- HTTP가 가진 가장 강력한 특징 중 하나인 캐싱 기능을 적용할 수 있습니다.
4. Layered System(계층화)
- 보안, 로드 밸런싱, 암호화 등을 위한 계층을 추가하여 구조를 변경할 수 있습니다.
- Proxy, Gateway와 같은 네트워크 기반의 중간매체를 사용할 수 있습니다.
- 하지만 Client는 Server와 직접 통신하는지, 중간 서버와 통신하는지는 알 수 없습니다.
5. Uniform Interface (인터페이스 일관성)
- URI로 지정한 Resource에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미합니다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하며, Loosely Coupling(느슨한 결함) 형태를 갖습니다.
REST API?
REST의 특징을 기반으로 서비스 API를 구현한 것
REST API의 특징
REST API의 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능한 것 입니다.
REST API 설계 예시
1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
2. 슬래시( / )로 계층 관계를 표현한다.
3. 마지막에 슬래시 (/)를 포함하지 않는다.
4. 밑줄( _ )을 사용하지 않고, 하이픈( - )을 사용한다.
5. URI는 소문자로만 구성한다.
6. HTTP 응답 상태 코드 사용
7. 파일확장자는 URI에 포함하지 않는다.
REST API와 RESTful API의 차이
RESTful은 REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고 합니다.
즉, REST의 원리를 잘 따르는 시스템을 RESTful이란 용어로 지칭됩니다.
출처: https://dev-coco.tistory.com/97 [슬기로운 개발생활:티스토리]
출처: https://khj93.tistory.com/
'면접준비' 카테고리의 다른 글
프론트엔드 면접 준비 : HTTP 와 HTTPS (0) | 2024.05.13 |
---|---|
프론트엔드 면접 준비 : 브라우저 저장소 (0) | 2024.05.08 |
프론트엔드 면접 준비 : 클로저(Closure)란? (0) | 2024.05.01 |
프론트엔드 면접 준비 : 호이스팅(Hoisting) (0) | 2024.04.25 |
면접준비 : 프론트엔드 및 기타 CS 지식 (0) | 2024.04.18 |