REST
웹 서비스를 설계하고 구축하기 위한 방식 중 하나이다.
쉽게 설명하면, 웹 서비스가 아키텍처적으로 작동하는 방식이라고 생각하면 된다.
REST는 리소스를 이름으로 구분하여 해당 리소스의 상태를 주고받는 모든 것을 의미함.
REST 개념
HTTP URI를 통해 리소스를 명시하고, HTTP Method(POST, GET, POST, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
CRUD Operation
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능을 묶어서 일컫는 말이다.
- Create : 데이터 생성 - POST
- Read : 데이터 조회 - GET
- Update : 데이터 수정 - PUT, PATCH
- Delete : 데이터 삭제 - DELETE
REST 특징
서버-클라이언트 구조 (Server-Client)
자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client
리소스 (Resources)
웹에서 식별 가능하고 조작 가능한 모든 것 (URI가 있으면 됨)
- 문서, 그림, 데이터, 해당 소프트웨어 자체 등
표현 (Representation)
클라이언트가 서버로 요청을 보냈을 때 응답 자원의 상태
리소스의 상태는 JSON, XML, RSS 등 여러 형태로 표현될 수 있음
- 사용자(User)라는 리소스를 JSON 형식으로 표현
- {"id":1, "username":"auny", "email":"auny@tistory.com", "age":30}
무상태 (Stateless)
REST는 HTTP의 특성을 이용하기 때문에 무상태성
서버는 상태정보를 기억할 필요가 없고, 들어온 요청에 대해서만 독립적으로 처리
=> 서버의 부담을 줄이고 확장성을 향상시킴
계층화 (Layered System)
아키텍처를 계층으로 나누어 각 계층이 독립적으로 구성되어야 함
=> 시스템의 유연성과 확장성을 높임
캐시 처리 기능 (Cacheable)
HTTP가 가진 특징 중 하나인 캐싱 기능을 적용할 수 있음
REST API
REST의 방식을 통해 리소스에 접근하기 위한 API를 의미한다.
🔻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 ⭕
- /getUsers, /createUser ❌
소문자 사용
URI 경로에서는 소문자 사용
URI의 마지막이 '/'로 끝나지 않음
파일 확장자는 URI에 포함하지 않음
하이픈(-) 사용
가독성을 위해 공백이 필요한 경우 언더스코어(_)가 아닌 하이픈(-) 사용
REST API로 충분한 거 같은데 RESTful API라는 건 뭘까?🤔
📌 REST API와 RESTful API 차이점
REST API : 단순한 REST 아키텍처를 기반으로 처리하는 API
RESTful API : REST의 원칙을 엄격하게 따르며, 제약 조건을 최대한 준수하는 API
따라서 모든 REST API가 반드시 REST의 모든 제약 조건을 완벽히 준수하는 것은 아니다.
RESTful API는 REST API의 하위 개념으로, REST 원칙을 잘 따르는 API라고 할 수 있다.
즉, REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful API라고 한다.
출처
'Study > Computer Science' 카테고리의 다른 글
| [Server] JWT(Json Web Token)의 구조 (0) | 2024.11.14 |
|---|---|
| [네트워크] 네트워크의 기초 (0) | 2024.10.28 |
| [자료구조] 선형/비선형 자료 구조 (1) | 2024.08.28 |
| [Database] 조인(JOIN) 종류 (0) | 2024.08.20 |
| [운영체제] 프로세스 스케줄링 (0) | 2024.07.26 |