◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
REST의 탄생 배경
프론트엔드와 백엔드가 분리되기 시작하면서 등장
Representational State Transfer
REST
REST는 웹 서비스를 만들기 위한 설계 방식 중 하나이다.
REST는 웹 서비스를 설계하고 구축하기 위한 아키텍처 스타일을 나타낸다.
쉽게 설명하면, 그냥 웹 서비스가 아키텍쳐적으로 작동하는 방식이라고 생각하면 될거같다.
REST는 리소스를 이름으로 구분하여 해당 리소스의 상태를 주고받는 모든 것을 의미한다.
REST 구체적인 개념
HTTP URI를 통해 리소스을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
리소스(Resource)와 URI(Uniform Resource Identifier)란?
CRUD Operation이란
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인
Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다.
- Create : 데이터 생성(POST)
- Read : 데이터 조회(GET)
- Update : 데이터 수정(PUT, PATCH)
- Delete : 데이터 삭제(DELETE)
REST의 특징
- 서버-클라이언트 구조 (Server-Client)
- 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client
- 리소스 (Resources)
- 웹에서 식별 가능하고 조작 가능한 모든 것 (URI가 있으면 된다.)
- ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 ..etc
- 표현 (Representation)
- 클라이언트가 서버로 요청을 보냈을 때 응답 자원의 상태
- 리소스의 상태는 JSON, XML, RSS 등 여러 형태로 표현될 수 있다.
- ex) "사용자 (User)"라는 리소스를 JSON 형식의 표현
{ "id": 123, "username": "john_doe", "email": "john@example.com", "age": 30, "address": { "street": "123 Main St", "city": "Cityville", "zipCode": "12345" } }
- 무상태 (Stateless)
- REST는 HTTP의 특성을 이용하기 때문에 무상태성을 갖는다.
- 서버는 상태정보를 기억할 필요가 없고(이전 요청의 상태를 저장하지 않는다), 들어온 요청에 대해서만 독립적으로 처리한다
- 이는 서버의 부담을 줄이고 확장성을 향상시킨다.
- 계층화 (Layered System)
- 아키텍처를 계층으로 나누어 각 계층이 독립적으로 구성되어야 한다.
- 이는 시스템의 유연성과 확장성을 높인다.
- 캐시 처리 기능 (Cacheable)
- HTTP가 가진 특징 중 하나인 캐싱 기능을 적용할 수 있다.
- HTTP가 가진 특징 중 하나인 캐싱 기능을 적용할 수 있다.
REST API
REST API란 REST의 방식을 통해 리소스에 접근하기 위한 API를 뜻한다.
(HTTP method를 사용한다)
ex) REST API의 간단한 예시
GET /users | 모든 사용자의 목록을 가져온다 |
GET /users/123 | ID가 123인 사용자의 정보를 가져온다 |
POST /users | 새로운 사용자를 생성한다. |
PUT /users/123 | ID가 123인 사용자의 정보를 업데이트한다 |
DELETE /users/123 | ID가 123인 사용자를 삭제한다. |
REST API의 설계 규칙
- 명사 사용: URI에는 동작을 나타내는 동사보다는 자원을 나타내는 명사를 사용한다.
- /users (O)
- /getUsers, /createNewUser (X)
- 소문자 사용: URI 경로에서는 소문자를 사용한다.
- URI의 마지막이 '/'로 끝나지 않아야 한다.
- 파일 확장자는 URI에 포함하지 않는다
- 하이픈(-) 사용: 가독성을 위해 공백이 필요한 경우 언더스코어(_)가 아닌 하이픈(-)을 사용한다.
🤔?? 의문점 ??
REST API이면 충분한거 같은데 또 RESTful API 라는게 등장한다.
도데체 무슨 차이를 가지고 있을까?
결론부터: REST API와 RESTful API 차이점
REST API: | 단순히 REST 아키텍처를 기반으로 처리하는 API |
RESTful API: | REST의 원칙을 엄격하게 따르며, 제약 조건을 최대한 준수하는 API를 의미한다 |
따라서 모든 REST API가 "RESTful"이라고 할 수는 없다.
RESTful API는 REST API 중에서도 특히 REST 원칙을 잘 지키는 것으로 간주된다.
즉, REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고 한다.
설계 규칙은 위에서 말한 "REST API의 설계 규칙"이 모두 포함된다.
'네트워크' 카테고리의 다른 글
[네트워크] SSL/TLS 쉽게 개념 및 특징 정리 (0) | 2024.03.01 |
---|---|
[네트워크] OSI 모델 (OSI 7-Layer Model) 아주 쉽게 개념 정리 (0) | 2024.02.29 |
[네트워크] URI, URL, URN 아주 쉽게 정리 (리소스의 개념) (0) | 2024.02.26 |
[네트워크] 네트워크 전달 방식 쉽게 이해하기 (Packet Switching, Circuit Switching) (1) | 2024.02.25 |
[네트워크] Curl 명령어란 (0) | 2024.02.22 |