💎 개념
1. REST (Representational State Transfer)
- 개념: REST는 웹 서비스 설계 아키텍처 스타일로, HTTP를 사용하여 클라이언트와 서버 간에 데이터를 교환하는 방식입니다. REST는 상태와 리소스를 표현하고 조작하는 방식에 대한 원칙과 제약 조건을 정의합니다.
- 특징: 무상태성(statelessness), 캐시 가능성(cachability), 계층화된 시스템(layered system), 인터페이스 일관성(uniform interface) 등.
- 예시: 웹 브라우저가 특정 웹 페이지를 요청할 때, HTTP GET 요청을 보내고, 서버가 해당 페이지의 HTML을 반환하는 방식이 REST의 기본 개념과 유사합니다.
2. REST API
- 개념: REST API는 REST 아키텍처 스타일을 따르는 API입니다. 클라이언트가 HTTP 요청을 통해 서버의 자원에 접근하고 조작할 수 있도록 합니다.
- 특징: GET, POST, PUT, DELETE 등의 HTTP 메서드를 사용하여 자원을 조회, 생성, 갱신, 삭제함.
- 예시: Twitter의 REST API를 통해 사용자는 특정 사용자의 트윗을 가져오는 GET 요청을 보내거나, 새로운 트윗을 게시하는 POST 요청을 보낼 수 있습니다.
GET https://api.twitter.com/2/tweets/:id
3. RESTful
- 개념: RESTful은 REST 아키텍처 스타일을 준수하는 서비스입니다. REST 원칙을 따르는 웹 서비스가 RESTful이라고 합니다.
- 특징: RESTful 서비스는 REST의 모든 제약 조건을 충족하고, 자원을 HTTP 메서드, URI, 표현을 통해 직관적이고 일관되게 관리합니다
- 예시: RESTful 웹 서비스는 클라이언트가 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 서버의 자원을 조작할 수 있도록 합니다. 예를 들어, 블로그 시스템에서 포스트를 CRUD(생성, 읽기, 갱신, 삭제)하는 API가 RESTful 서비스입니다.
GET /posts
POST /posts
PUT /posts/:id
DELETE /posts/:id
4. RESTful API
- 개념: RESTful API는 RESTful 원칙을 준수하는 API입니다. 이는 자원의 상태를 HTTP 메서드, URI, 표현을 통해 클라이언트와 서버 간에 주고받습니다. REST의 제약 조건을 엄격히 준수하여 자원을 관리하는 API를 의미합니다.
- 특징: RESTful API는 REST의 모든 제약 조건을 따르며, HTTP 메서드와 상태 코드를 사용하여 자원을 관리합니다.
- 예시: GitHub의 RESTful API는 리포지토리를 가져오거나, 새로운 이슈를 생성하는 등의 작업을 HTTP 요청을 통해 수행할 수 있도록 합니다.
GET
https://api.github.com/repos/:owner/:repo
POST
https://api.github.com/repos/:owner/:repo/issues
💎 비교
- REST vs REST API:
- REST는 아키텍처 스타일, 즉 설계 원칙입니다.
- REST API는 REST 원칙을 구현한 실제 API입니다.
- RESTful vs RESTful API:
- RESTful은 REST 아키텍처 스타일을 준수하는 서비스나 시스템을 지칭하는 형용사입니다.
- RESTful API는 REST 원칙을 준수하는 실제 API입니다.
- REST API vs RESTful API:
- REST API와 RESTful API는 사실상 동일한 개념으로, REST 원칙을 따르는 API를 지칭합니다.
다만, RESTful API가 REST 원칙을 더욱 엄격히 준수하는 것을 강조하는 표현입니다.
- REST API와 RESTful API는 사실상 동일한 개념으로, REST 원칙을 따르는 API를 지칭합니다.
- REST vs RESTful:
- REST는 아키텍처 스타일(설계 원칙)이며, RESTful은 그 원칙을 준수하는 시스템이나 서비스를 설명하는 형용사입니다.
- REST는 아키텍처 스타일(설계 원칙)이며, RESTful은 그 원칙을 준수하는 시스템이나 서비스를 설명하는 형용사입니다.
💎 요약
- REST: 웹 서비스 설계 아키텍처 스타일로, 자원을 HTTP를 통해 관리하는 원칙과 제약 조건을 정의함.
- REST API: REST 원칙을 구현한 API.
- RESTful: REST 원칙을 준수하는 서비스나 시스템을 지칭하는 형용사.
- RESTful API: REST 원칙을 준수하는 API, REST API와 사실상 동일하지만, REST 원칙 준수를 강조함.
이 네 가지 개념은 웹 서비스 및 API 설계에서 자주 사용되며, REST의 원칙을 얼마나 잘 준수하느냐에 따라 RESTful이라고 평가됩니다. RESTful API는 클라이언트와 서버 간의 통신을 단순하고 직관적으로 만듭니다.
💎 HTTP 메서드
REST와 REST API는 다양한 HTTP 메서드를 사용할 수 있습니다.
REST 아키텍처 스타일은 자원의 상태를 표현하고 조작하기 위해 HTTP 프로토콜을 활용하는 방식으로, 각 HTTP 메서드는 특정한 목적을 가지고 있습니다.
- GET: 서버에서 자원을 조회할 때 사용합니다. 데이터 변경 없이 조회만 하므로 안전한 요청입니다.
GET /posts
GET /posts/1
- POST: 서버에 새로운 자원을 생성할 때 사용합니다. 요청 본문에 새로 생성될 자원의 데이터를 포함합니다.
POST /posts
Content-Type: application/json
{
"title": "New Post"
, "content": "This is a new post."
}
- PUT: 서버의 기존 자원을 업데이트할 때 사용합니다. 요청 본문에 수정된 자원의 데이터를 포함합니다.
PUT /posts/1
Content-Type: application/json
{
"title": "Updated Post"
, "content": "This is an updated post."
}
- DELETE: 서버의 기존 자원을 삭제할 때 사용합니다.
DELETE /posts/1
- PATCH: 서버의 기존 자원의 일부를 업데이트할 때 사용합니다. PUT과 비슷하지만, 자원의 일부만 수정할 때 사용됩니다.
PATCH /posts/1
Content-Type: application/json
{
"title": "Partially Updated Post"
}
- OPTIONS: 서버가 지원하는 HTTP 메서드의 목록을 요청할 때 사용합니다.
OPTIONS /posts
💎REST와 REST API의 활용
REST 아키텍처 스타일을 따르는 REST API는 이와 같은 다양한 HTTP 메서드를 사용하여 클라이언트가 서버의 자원을 효과적으로 조작할 수 있도록 합니다.
따라서, REST와 REST API는 GET 요청뿐만 아니라 POST, PUT, DELETE, PATCH, OPTIONS 등 다양한 HTTP 메서드를 지원하며, 이를 통해 자원의 생성, 조회, 갱신, 삭제 등의 작업을 수행할 수 있습니다.
- 자원 조회 (GET):
GET /api/users/123
- 새 자원 생성 (POST):
POST /api/users
Content-Type: application/json { "name": "John Doe", "email": "john@example.com" }
- 기존 자원 업데이트 (PUT):
PUT /api/users/123
Content-Type: application/json { "name": "John Smith", "email": "john.smith@example.com" }
- 자원 삭제 (DELETE):
DELETE /api/users/123
- 자원 부분 업데이트 (PATCH):
PATCH /api/users/123
Content-Type: application/json { "email": "new.email@example.com" }
이와 같이, REST API는 다양한 HTTP 메서드를 사용하여 클라이언트와 서버 간의 자원 관리를 효과적으로 수행할 수 있도록 합니다.
'IT개념' 카테고리의 다른 글
[IT개념] 소프트웨어 개발 방법론 - 애자일(Agile) (0) | 2024.07.16 |
---|---|
[IT개념] 기업 데이터 관리 기술 및 방법론 - EAI, ECM, ERP ... (1) | 2024.07.14 |
[IT개념] CRM(Customer Relationship Management) 시스템 (0) | 2024.07.09 |
[IT개념] E2E (End to End) (0) | 2024.07.08 |
[IT개념] 메서드와 함수의 차이 (0) | 2024.07.08 |