REST API 많이 들어봤는데 이게 정확히 무엇일까?
REST
(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
- 해당 자원(URI)에 대한 *CRUD Operation을 적용하는 것을 의미한다.
*CRUD Operation: "Create, Read, Update, Delete"의 첫 글자를 따서 만든 약어로, 대부분의 컴퓨터 소프트웨어에서 데이터와 관련된 네 가지 기본 연산을 의미한다.
구성요소 :
- 자원 (Resource):
- REST는 모든 것을 "자원"으로 간주한다.
- 자원은 URL (Uniform Resource Locator)로 식별된다.
- HTTP 메서드 (Methods):
- CRUD 연산과 관련된 기본적인 HTTP 메서드를 사용하여 자원에 대한 동작을 나타낸다.
- GET: 자원을 읽음 (Read).
- POST: 새로운 자원을 생성 (Create).
- PUT or PATCH: 자원을 수정/업데이트 (Update).
- DELETE: 자원을 삭제 (Delete).
- CRUD 연산과 관련된 기본적인 HTTP 메서드를 사용하여 자원에 대한 동작을 나타낸다.
- 표현 (Representation):
- 클라이언트와 서버 간에 데이터 교환 시 자원의 상태를 나타내는 방법이다.
- JSON, XML 등의 형식을 사용하여 데이터를 표현한다.
API
"Application Programming Interface"의 약자로, 다른 소프트웨어 애플리케이션들이 서로 소통하거나 상호작용할 수 있게 만드는 규약, 프로토콜, 도구 및 함수의 집합이다.
즉, REST API란 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것으로 소통하거나 상호작용하는 규약이다.
특징
- Stateless (무상태성):
- 각 요청은 모든 정보를 포함해야 합니다. 즉, 서버는 클라이언트의 상태 정보를 저장하거나 이전 요청에 의존하지 않는다.
- Client-Server (클라이언트-서버 구조):
- 클라이언트와 서버는 독립적으로 운영되며, 각각의 개발과 확장이 가능하다.
- Cacheable (캐시 가능):
- 서버 응답은 캐시할 수 있으며, 이를 통해 성능을 향상시킬 수 있다.
- Layered System (계층화된 시스템):
- 시스템 구성요소는 계층화 될 수 있으며, 각 계층은 독립적으로 작동한다.
- Uniform Interface (일관된 인터페이스):
- REST는 일관된 인터페이스를 제공하여 각 서비스의 상호작용을 단순화하고 분리한다. 이 원칙은 다양한 하위 원칙들로 구성된다. (예: 자원 식별, 메시지 자체 설명성, 상태 코드 사용 등).
RESTful API란?
REST 원칙을 따르는 API를 의미한다. 따라서 다음과 같은 특성이 있다.
- 기본적으로 HTTP 프로토콜을 사용.
- 자원은 URI로 식별.
- HTTP 메서드를 활용하여 CRUD 연산을 수행.
- 메시지 포맷으로는 주로 JSON 또는 XML을 사용.
- 무상태성 및 클라이언트-서버 구조.
솔직히 여기에서 너무 잘 정리 해주셨다.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.10.09 CORS 재정리 (0) | 2023.10.14 |
---|---|
23.10.07 ORM을 사용하면서 쿼리가 복잡해지는 경우 (0) | 2023.10.12 |
23.10.05 콜백헬 (0) | 2023.10.11 |
23.10.04 프레임워크 라이브러리 (0) | 2023.10.10 |
23.10.03 도메인 주도 설계 (Domain-driven design, DDD) (0) | 2023.10.05 |