REST
1. REST란?
Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처다.
2. REST 주요 원칙
무상태성(Stateless) | 각 요청은 독립적이어야 하며, server는 client의 state를 저장하지 않는다. client의 state는 client측에서 유지되고 요청에 필요한 모든정보는 요청에 포함되어야 한다. |
클라이언트-서버 구조(Client-Server) | client와 server는 명확하게 구분되어 있어야하며, 서로 독립적으로 발전할 수 있다. |
계층화된 시스템(Layerd System) | request와 response는 중간 server를 통해 전달될 수 있으며, 이러한 중간 server는 캐싱, 보안, 로드 밸런싱 등의 역할을 수행할 수 있다. |
캐시가능성 | server의 response는 캐시할 수 있어야 하고, client는 캐시된 response를 재사용할 수 있다. |
일관된 인터페이스(Uniform interface) | system의 comflexity를 줄이기 위해 Resource는 URI로, 동작은 HTTP가 제공하는 Method(Post,Put,Patch,Get,Delete)를 사용하며 결과는 HTTP의 상태코드로 수행된다. |
코드온 디맨드(옵션) | server는 client가 실행할 수 있는 코드를 제공할 수 있다. |
3. REST 동작 (CRUD)
REST의 동작은 HTTP의 Method로 동작하는데 이를 Create, Read, Update, Delete 줄여서 CRUD라고 한다.
동작 | 함수 | 특징 |
Create | POST | 데이터(JSON, XML)을 생성할 때 사용 |
Read | GET | 데이터를 불러올때 사용 |
Update | PUT | 객체 내부의 부분 프로퍼티를 지정해 해당 프로퍼티만 수정할 경우 기존에 있던 다른 프로퍼티들은 사라지고 수정한 새 프로퍼티만 남는다. |
PATCH | 객체 내부의 부분 프로퍼티를 지정해 해당 프로퍼티만 수정할 경우 기존에 있던 다른 프로퍼티들은 유지되고 수정한 새 프로퍼티만 값이 변경된다. | |
Delete | DELETE | 데이터를 삭제할때 사용 |
REST API
1. REST API 란?
REST API는 REST 아키텍처를 따르는 어플리케이션 프로그래밍 인터페이스(API) 이다. 즉, REST의 설계원칙에 따라 만들어진 API로, Client와 Server간 데이터 교환을 위한 규칙을 정의한다.
2. 특징
- URI를 통한 자원 식별 : API는 각 자원(Resource)을 URI(Uniform Resource Identifier)를 통해 식별한다.
- HTTP Method : Resource에 대한 조작(CRUD)은 표준 HTTP Method(GET,POST,PUT,PATH,DELETE 등)로 이뤄진다.
- Stateless 유지 : API는 무상태성을 유지하며, 각 요청은 독립적이다.
- Response DATA Type : 응답데이터는 일반적으로 JSON, XML 등의 형식으로 전달된다. 데이터 타입은 규정된것이 아니다.
- HTTP Response Code : REST API는 요청에 대한 처리 결과를 표준 HTTP 응답코드(200, 404 등)를 사용한다.
RESTful API
1. RESTful API 란?
REST아키텍처의 제약조건을 완벽하게 준수하는 API다. REST API와 동일한 특성을 갖지만, 보다 엄격하게 REST아키텍처를 준수한다.
2. 특징
- 표준화된 URI 설계 : URI는 Resource를 명확하게 식별하고, Resource간 관계를 반영한다.
- 상태 전이 : Client는 상태를 전이하기 위해 Hypermedia(link, state 등)을 사용한다.
- 명확한 HTTP Method 사용 : 각 Method는 Embeded한 작업(Create:POST, Read:GET, Update:PUT/PATCH, Delete:DELETE)을 나타낸다.
요약 비교
항목 | REST | REST API | RESTful API |
정의 | 아키텍처 스타일 or 설계 원칙 | REST 원칙을 따르는 API | REST 원칙을 철저히 따르는 API |
주요 특징 | 무상태성, 클라이언트-서버구조, 계층화된 시스템, 캐시가능성, 일관된 인터페이스 옵션 : code on demand |
REST의 제약조건을 만족하는 API |
REST의 제약조건을 철저히 만족하는 API |
사용 용도 | 설계 원칙으로서의 지침 | API 설계 및 구현 | REST를 엄격히 준수하는 API 구현 |
중요성 | 웹 서비스 설계 가이드라인 | 실질적 구현체로서의 API | REST API의 일종으로, REST 원칙 강조 |
🔥 배운점
REST라는 개념은 알고 있었지만 확실하게 보고 정리한 적이 없어 REST, REST API, RESTful API 의 개념정리가 없어 차이점을 알지 못했으나, 이번 정리를 통해 이 세가지의 차이를 명확히 할 수 있었다. HTTP에 대해 먼저 학습후 REST를 학습하면 이해가 쉬울것인데 HTTP를 후에 다루게 되었으니 추가 학습후 부족한 설명 부분을 추가해야겠다.
참고
https://aws.amazon.com/ko/what-is/restful-api
RESTful API란 무엇인가요? - RESTful API 설명 - AWS
Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애
aws.amazon.com
https://www.redhat.com/en/topics/api/what-is-a-rest-api
What is a REST API?
A REST API (also known as RESTful API) is an application programming interface that conforms to the constraints of REST architecture. REST stands for representational state transfer.
www.redhat.com
'Network' 카테고리의 다른 글
[네트워크] HTTP (0) | 2024.09.05 |
---|