[RESTful API] 해당 프로토콜의 정의와 사용하는 이유에 대해서 작성 및 적용 방법 등에 대해서 작성
1. REST API 의 정의?
(Representational State Transfer API)
REST API란 REST를 기반으로 만들어진 API를 의미한다.
1-1. REST에대해 먼저 알아보기
REST는 (Representational State Transfer)의 약자로
자원을 이름(자원의 표현)으로 구분하여
해당 자원의 상태를 주고받는 모든 것을 의미한다.
즉, 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻한다.
**잠깐 용어정리**
- 자원 : 해당 소프트웨어가 관리하는 모든 것 ( 문서, 그림, 데이터, 해당 소프트웨어 자체 등 )
- 표현 : 그 자원을 표현하기 위한 이름 ( DB의 학생 정보가 자원이면, 'students'를 자원의 표현으로 정함 )
- 상태 전달 : 데이터가 요청되는 시점에 자원의 상태를 전달한다. (JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적)
다시 정리하면 REST란?
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.
1-1-1. REST의 구성요소
구성요소 | 구성요소에 대한 설명 |
자원(Resource) | REST API에서 자원은 클라이언트에서 접근할 수 있는 모든 개체, 데이터, 서비스가 포함된다. |
행위(Verb) | REST API는 HTTP의 Method (POST, GET, PUT, PATCH, DELETE 등) 사용하여 명시된 자원에 대한 CRUD(Create, Read, Update, Delete) 명령을 실행한다. |
표현(Representaion) | REST API에서 리소스는 다양한 형태로 표현될 수 있다. 가장 많이 사용되는 형태는 JSON이고, XML, TEXT, RSS 등의 표현이 존재한다. |
1-1-2. REST의 특징
특징 | 특징에 대한 설명 |
1. Stateless (무상태) | 서버는 각 요청을 독립적으로 처리하며, 클라이언트의 상태를 저장하지 않는다. 따라서 서버는 클라이언트의 이전 상태를 알 필요가 없다. 이는 서버의 확장성과 클라이언트와의 독립성을 높여준다. |
2. Server-Client (서버-클라이언트 구조) | REST는 클라이언트와 서버 간의 역할을 명확하게 분리한다. 클라이언트는 사용자 인터페이스를 제공하고, 서버는 데이터 저장, 처리, 관리 등의 역할을 수행한다. 이로써 각각의 역할을 독립적으로 개선하고 확장할 수 있다. |
3. Uniform Interface (인터페이스 일관성) | REST는 통일된 인터페이스를 제공한다. 이는 아래의 네 가지 원칙으로 구성된다. 리소스 식별: 각 리소스는 고유한 식별자(URI)로 식별된다. 리소스 조작: 클라이언트는 리소스에 대한 CRUD(Create, Read, Update, Delete) 조작을 수행한다. 자기 서술적 메시지: 요청은 충분한 정보를 포함하여 자기 서술적이어야 한다. 서버는 요청에 대한 충분한 정보를 통해 어떻게 처리할지 결정할 수 있다. 하이퍼미디어(Hypermedia): 서버는 클라이언트에게 다음에 취할 수 있는 조치와 리소스와의 관계를 알려주는 링크를 포함하여 응답을 반환한다. |
4. Layered System (계층 구조) | REST 아키텍처는 계층 구조를 허용한다. 서버는 다중 계층으로 구성될 수 있으며, 중간 계층(로드 밸런서, 캐시 등)을 통해 보안, 로드 균형, 확장성 등을 개선할 수 있다. |
5. Cacheable (캐시 처리 가능) | REST는 HTTP 프로토콜을 기반으로 하므로, HTTP의 캐싱 기능을 이용하여 클라이언트와 서버 간의 통신을 최적화할 수 있다. |
6. Self-Descriptiveness (자체표현) |
2. REST API란 ?
REST의 특징을 기반으로 서비스 API를 구현한 것이다.
2-1. REST API를 사용하는 이유
간결하고 직관적인 인터페이스 , 플랫폼 독립성 ,
확장성과 유연성 , 캐싱 및 성능 최적화,
보안성 , 널리 사용되는 웹 표준
1. 간결하고 직관적인 인터페이스:
RESTful API는 HTTP 메서드(GET, POST, PUT, DELETE 등)와 URI(Uniform Resource Identifier)를 이용하여 리소스에 대한 조작을 표현한다.
이러한 직관적이고 간결한 인터페이스는 개발자가 API를 이해하고 사용하기 쉽게 만들어준다.
2. 플랫폼 독립성:
RESTful API는 웹 표준인 HTTP를 기반으로 하므로, 어떤 플랫폼이나 언어를 사용하더라도 상호 운용성을 제공한다.
따라서 클라이언트와 서버 간에는 플랫폼에 종속되지 않고 통신할 수 있다.
3. 확장성과 유연성:
RESTful API는 자원을 기반으로 설계되어 서버의 확장성과 유연성을 높여준다.
각 리소스는 고유한 URI를 가지며, 클라이언트는 필요한 리소스에 대해 URI를 통해 조작할 수 있다.
이는 시스템의 기능을 추가하거나 변경할 때 영향을 최소화하고, 필요한 리소스에 집중하여 작업할 수 있는 장점을 제공합니다.
4. 캐싱 및 성능 최적화:
RESTful API는 HTTP의 캐싱 기능을 이용하여 응답을 캐시하고 재사용할 수 있습니다.
이는 네트워크 트래픽을 감소시키고 서버의 성능을 향상시킬 수 있습니다.
또한, RESTful API는 필요한 리소스만 요청하고 응답으로 받아오므로, 필요 없는 데이터를 전송하지 않고 효율적인 통신이 가능합니다.
5. 보안성:
RESTful API는 HTTP의 보안 기능인 SSL/TLS를 이용하여 통신을 암호화할 수 있다.
또한, 각 요청은 인증과 권한 부여를 위한 헤더나 토큰을 포함할 수 있어 보안성을 강화할 수 있습니다.
6. 널리 사용되는 웹 표준:
RESTful API는 HTTP를 기반으로 하고, 웹 표준에 따라 설계되어 있다.
따라서 많은 개발자와 기업이 이해하고 사용할 수 있으며, 다양한 도구와 라이브러리가 지원됩니다.
2-2. REST API 디자인 가이드
REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약한다.
- 첫 번째, URI는 정보의 자원을 표현해야 한다.
- 두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)로 표현한다.
- 행위(Method)는 URI에 포함하지 않는다.
2-3. 설계 규칙
설계규칙 | 설계규칙 설명 |
1. URI는 명사를 사용할 것 |
|
2. 슬래시( / )로 계층 관계를 표현할 것 |
|
3. URI 마지막 문자로 슬래시( / )를 포함하지 말 것 |
|
4. 밑줄( _ )을 사용하지 말고 하이픈( - )을 사용할 것 |
|
5. URI는 소문자로만 구성할 것 |
|
6. HTTP 응답 상태 코드 사용할 것 |
|
7. 파일확장자는 URI에 포함하지 않는다. |
REST API 요약
URI는 정보의 자원만 표현해야 하며, 자원의 행위는 HTTP Method에 명시한다는 것이다.
<reference site>
https://dev-coco.tistory.com/97
REST란? REST API 와 RESTful API의 차이점
참고 REST(REpresentational State Transfer)란? REST의 정의 "REpresentational State Transfer" 의 약자로, 자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다. 즉, 자원(
dev-coco.tistory.com
https://aws.amazon.com/ko/what-is/restful-api/
RESTful API란 무엇인가요? - RESTful API 설명 - AWS
Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애
aws.amazon.com
https://velog.io/@somfist/REST%EB%9E%80-REST-API-RESTful-API%EC%B0%A8%EC%9D%B4%EC%A0%90
REST란? REST API / RESTful API차이점
📢 면접준비 및 알던 지식들의 재정리를 겸사겸사 하고있습니다.
velog.io
[네트워크] REST API란? REST, RESTful이란?
REST API란 REST를 기반으로 만들어진 API를 의미합니다. REST API를 알기 위해 REST부터 알아보도록 하겠습니다. REST란? REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상
khj93.tistory.com