REST API에 대해 알아보기전에 먼저 Rest와 API의 개념에 대해 알아보고자 합니다.
API란?
API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다.
API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.
예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있습니다.
휴대폰의 날씨 앱은 API를 통해 이 시스템과 대화하여 휴대폰에 매일 최신 날씨 정보를 표시합니다.
API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다.
인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다.
API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.
REST란?
REST는 Representational State Transfer의 줄임말입니다.
REST는 클라이언트가 서버 데이터에 액세스하는 데 사용할 수 있는 GET, PUT, DELETE 등의 함수 집합을 정의합니다.
클라이언트와 서버는 HTTP를 사용하여 데이터를 교환합니다.
오늘날 웹에서 볼 수 있는 가장 많이 사용되고 유연한 API입니다. 클라이언트가 서버에 요청을 데이터로 전송합니다.
서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환합니다.
REST의 구성요소
1. Resources(자원)
- URI(Uniform Resource Identifier)는 인터넷에 있는 자원을 나타내는 주소를 의미합니다.
- 이때 유일한 ID를 가지는 Resource가 서버에 존재하며, 각 Resource의 상태를 조작 및 조회하기 위해 요청을 보내게 됩니다.
2. Method(행위)
- Resource를 조작하는 것을 method라고 합니다.
- URI를 이용해서 Resource를 지정하고 해당 Resource를 조작하기 위하여 method를 사용합니다.
- 모든 서비스는 CRUD 기반입니다.
- HTTP Method에서의 예시로는 POST, GET, PUT, PATCH, DELETE등이 있습니다.
- POST - Create: 데이터 추가
- GET - Read: 데이터 조회
- PUT, PATCH, POST - Update: 데이터 수정
- DELETE - Delete: 데이터 삭제
3. Representation of Resources
- REST에서 하나의 Resource는 여러 형태의 Representation으로 나타내어지는 것이 가능합니다.
- 예를 들어서는 JSON, xml, test, rss등의 여러 형태로 표현되는 것이 가능하다는 의미입니다.
REST의 특징
1. Stateless(무상태)
- REST API의 주된 특징은 무상태입니다. 무상태는 서버가 요청 간에 클라이언트 데이터를 저장하지 않음을 의미합니다. 서버에 대한 클라이언트 요청은 웹 사이트를 방문하기 위해 브라우저에 입력하는 URL과 유사합니다. 서버의 응답은 웹 페이지의 일반적인 그래픽 렌더링이 없는 일반 데이터입니다.
2. Uniform Interface
- URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처임을 의미합니다.
즉, iOS나 안드로이드 플랫폼, 또는 특정 언어나 기술에 종속되지 않고 HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능합니다.
3. Cacheable
- HTTP라는 웹 표준을 사용하므로 HTTP가 가진 캐싱 기능을 사용하는 것이 가능합니다.
- 캐싱을 하게 된다면 똑같은 데이터를 계속해서 내려 받을 필요가 없어집니다
4. Client-Server 구조
- 자원을 가지고 있는 쪽이 Server이며 자원을 요청하는 쪽이 Client 입니다.
- 이런 구조를 통해 서로 간의 의존성을 줄이는 것 이 가능합니다
5. Self-descriptiveness
- REST API의 메세지만 보고도 이해하기 쉬운 표현으로 구성되어 있습니다.
6. Layered System
- 다중 계층으로 구성이 가능하며, 암호화 계층 등을 추가해서 구조상의 유용성을 들 수 있습니다.
- Gateway 네트워크 기반의 중간 매체를 사용할 수 있게 됩니다.
7. Code on Demand (선택사항)
- Server로부터 스크립트를 받아서 Client에서 실행하게 됩니다.(반드시 그러는 것은 아닙니다.)
REST의 장단점
1. 장점
- HTTP 프로토콜을 그대로 사용하기 때문에 별도의 인프라를 구축할 필요가 없습니다.
- 서버와 클라이언트 역할을 분리할 수 있게 해 줍니다.
2. 단점
- 사용할 수 있는 메소드가 4가지 밖에 존재하지 않습니다. (위에서 알아보았던 POST, GET, PUT, DELETE 방식밖에 없습니다.)
- 표준이 존재하지 않습니다.
- HTTP 통신 모델에 대해서만 지원합니다.
일반적인 사용 방식
- www.chobo5.com을 서버라고 가정하고 예를 들겠습니다.
- GET - todos: 해야할 일 전체조회
- www.chobo5.com/api/todos
- GET - todos/{id}: 해야할 일 단일조회
- www.chobo5.com/api/todos/22
- POST - todos: 해야할 일 추가
- www.chobo5.com/api/todos
- PUT, PATCH- todos/{id}: 해야할 일 수정
- www.chobo5.com/api/todos/22
- DELETE- todos/{id}: 해야할 일 삭제
- www.chobo5.com/api/todos/22
'IT' 카테고리의 다른 글
SQL - SELECT문 실행 순서 정리 (0) | 2024.01.31 |
---|---|
WebBrowser의 실행 과정 (0) | 2023.11.15 |
표준적인 FirebaseFirestore 데이터 저장 방식 정리 (0) | 2023.07.24 |