🔵 REST 정의
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.
🔸 CRUD Operation
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성, post), Read(읽기, get), Update(갱신, put/patch), Delete(삭제, delete)를 묶어서 일컫는 말이다.
🔵 REST 특징
Server-Client(서버-클라이언트 구조)
Stateless(무상태)
Cacheable(캐시 처리 가능)
Layered System(계층화)
Uniform Interface(인터페이스 일관성)
🔵 REST 구성
자원(Resource) : HTTP URI
자원에 대한 행위(Verb) : HTTP Method
자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load
🔵 REST 장단점
🔸 REST 장점
HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
서버와 클라이언트의 역할을 명확하게 분리한다.
🔸 REST 단점
표준이 자체가 존재하지 않아 정의가 필요하다.
HTTP Method 형태가 제한적이다.
브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.
구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.(익스폴로어)
🔵 API
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
🔵 REST API
RESPT API란 REST의 원리를 따르는 API
🔸 REST API 설계 규칙
URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
마지막에 슬래시 (/)를 포함하지 않는다.
슬래시 구분자(/ )는 계층 관계를 나타내는데 사용한다.
언더바 대신 하이폰을 사용한다. 밑줄(_)은 URI에 사용하지 않는다.(가독성)
파일확장자는 URI에 포함하지 않는다.
행위를 포함하지 않는다.
🔵 RESTful
🔸 RESTful 정의
REST의 원리를 따르는 시스템을 의미합니다. 하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아니다. 모든 CRUD 기능을 POST로 처리 하는 API 혹은 URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템이므로, REST API를 사용하였지만 RESTful 하지 못한 시스템이다.
🔸 RESTful 목적
이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이다.
RESTful한 API를 구현하는 근본적인 목적은 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이다. 따라서 성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.
'IT > Etc' 카테고리의 다른 글
TCP와 UDP에 차이 (0) | 2024.05.30 |
---|---|
UDP 사용시 양쪽으로 연결해야 하는 이유 (0) | 2024.05.30 |
우분투 설치 (0) | 2024.05.19 |
웹 서버와 WAS의 차이점 (0) | 2024.04.22 |
Timestamp Conversion (0) | 2024.03.19 |