REST란?
- REST는 클라이언트와 서버가 데이터를 주고 받는 형식 중 하나다.
- REST(Representational State Transfer)는 분산 시스템, 특히 웹(WWW)과 같은 네트워크 상의 자원(resource)을 정의하고 자원에 대한 주소(URI)를 지정하는 아키텍처 스타일이다.
- REST는 웹의 원칙과 HTTP 프로토콜을 그대로 활용하여 클라이언트-서버 간에 데이터를 전송하는 통신 방식 중 하나다.
- REST는 자원(Response), 행위(Verb), 표현(Representation)으로 구성된다.
- REST에서 CRUD Operation*은 HTTP 메서드 형식인 POST, GET, PUT, PATCH, DELETE로 매핑되어 동작한다.
CRUD Operation이란?
- CRUD Operation은 웹 애플리케이션에서 데이터를 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)하는 작업이다.
REST의 구성 요소는?
1. 자원(Response) - URI
- 모든 자원은 고유한 ID를 가지며 이 자원은 서버에 저장된다.
- 클라이언트는 이 URI를 이용해서 각 데이터에 대해서 접근하거나 조작 권한을 서버에 요청한다.
2. 행위(Verb) - HTTP Method
- HTTP 프로토콜을 따라서 각각의 메서드를 사용한다.
- 메서드의 종류는 POST, GET, PUT, PATCH, DELETE 등이 있다.
- POST 메서드는 새로운 자원을 서버에 생성할 때 사용한다.
- GET 메서드는 서버에서 자원을 조회하거나 가져올 때 사용한다.
- PUT 메서드는 기존 자원을 전체 수정할 때 사용한다.
- PATCH 메서드는 자원의 일부 수정에 사용된다.
- DELETE 메서드는 서버에서 자원을 삭제할 때 사용된다.
3. 표현(Representation) - JSON/XML
- 클라이언트가 요청한 자원에 대해서 서버가 보내는 응답이다.
- JSON이나 XML형식으로 데이터를 받는것이 일반적이다.
Rest의 가장 큰 특징 중 하나는 위와 같이 요청만 봐도 어떠한 목적을 가진 요청인지 한눈에 들어온다는 것이다.
이는 여러 개발자들이 협업할 때 아주 용이하게 사용할 수 있다.
예를 들어 서버에 아이템 이라는 데이터를 REST 형식으로 저장하려고 한다.
우리는 POST를 사용해 새 아이템에 대한 데이터 생성을 요청하고, 해당 요청을 담은 API를 만들어야 한다.
위에 적혀있는 각각의 구성 요소를 담은 API를 만들고 이를 서버에 요청한다.
이후 서버는 해당 요청을 받고 이상이 없다면 해당 요청이 성공했다는 응답과 함께 데이터를 보내준다.
요청에 대한 응답 성공 여부는 상태 코드로도 확인할 수 있다.
정리하자면 REST에서 URI는 데이터에 대한 내용물을 의미하고
이 내용물을 GET, POST, PUT 과 같은 택배 상자에 넣어서 요청한다고 생각하면 된다.
이후에 응답에 대한 성공 여부를 담은 상태 코드는 택배 영수증처럼 사용자에게 날라온다.
이를 통해 알 수 있는 REST의 특징은 다음과 같다.
REST의 특징
1. 구조 (Server-Client 구조)
- REST는 클라이언트와 서버 구조로 통신한다.
- 자원을 요청하는 쪽은 클라이언트고, 자원을 가지고 있는 쪽은 서버다.
- 클라이언트는 사용 유저에 대한 인증과 정보만 관리하면 된다.
- 서버는 API를 저장하고 데이터만 관리하면 된다.
- 따라서 서버와 클라이언트간의 상호 의존성이 상당히 낮은것이 REST의 장점 중 하나이다.
2. 무상태성(stateless)
- 서버는 클라이언트의 그 어떠한 정보도 저장하지 않는다. (캐싱을 통해 조절 가능)
- 각각의 요청은 독립적이여야 하기 때문에 클라이언트는 매 요청 시 필요한 모든 정보를 함께 보내야 한다.
- 이를 통해 클라이언트-서버 간의 상호작용이 단순화되며 멱등성(Idempotent)*과도 연관된다.
멱등성(Idempotent) 이란? : 특정 HTTP 메서드를 여러 번 호출하더라도 결과가 달라지지 않는 속성을 의미하며 시스템의 안정성과 예측 가능성을 높여준다.
3. 캐싱(cashing)
- 캐싱(Caching)은 HTTP에서 제공하는 서버와 클라이언트 간의 효율적인 데이터 전달을 위해 데이터를 임시로 저장하는 기술이다.
- 캐싱은 서버로의 네트워크 요청 수를 줄이기 때문에 응답 시간이 빨라진다.
- REST 시스템은 캐싱을 하며 서버는 응답에 캐싱 가능한 정보를 포함시킬 수 있다.
4. 계층 시스템(Layered System)
- 클라이언트와 서버 사이에 Rest는 여러 계층의 시스템이 존재할 수 있다.
- 다중 Layer로 이루어진 Rest 시스템은 (보안, 로드밸런싱, 캐싱, 암호화, 인증)과 같은 Layer로 확장성과 보안성을 증가시켜준다.
- 각각의 계층은 독립적으로 구성되며 다른 계층에 영향을 주지 않는다.(시스템 유지보수 용이)
- Layer는 오직 Rest에서 관리하기 때문에 클라이언트는 데이터를 요청할 때 이러한 Layer에 대해서 신경쓰지 않아도 되서 클라이언트와 서버는 서로가 편리한 구조를 유지할 수 있다.
그렇다면 REST와 REST API의 다른점은?
두 단어의 차이점을 알기 위해서는 우선 API(Application Programming Interface)가 무엇인지 알아봐야 한다.
API는 간단하게 정리하자면 소프트웨어 간의 상호작용을 정의하는 규칙과 도구의 집합이다.
API를 통해 애플리케이션이나 서비스는 서로 데이터를 주고받으며 통신한다.
쉽게 말해 API를 식당의 메뉴판이라고 생각하면 된다.
클라이언트는 오직 메뉴판에 존재하는 메뉴(API가 제공하는 기능)만 주문할 수 있고, 메뉴판에는 주방의 세부사항(서버의 로직)이 공개될 필요가 없기 때문에 손님과 주방은 서로 편하게 상호작용 할 수 있다.
REST = 스타일
- REST는 설계 원칙, 스타일 그 자체를 의미한다.
- REST는 HTTP뿐만 아니라 다양한 프로토콜 위에서 구현될 수 있지만, 거의 대부분 HTTP와 함께 사용한다.
- REST의 특징은 다음과 같다.(REST 특징)
REST API = 구현
- REST API는 REST 원칙을 구현한 API를 의미한다.
- RESTful 원칙을 준수하는 API라는건 클라이언트가 서버와 통신하고 데이터를 주고받는 인터페이스 자체를 의미한다.
- 즉 REST API란 REST 스타일을 따르는 HTTP 프로토콜을 사용하여 데이터를 주고받는것을 구현한 것이다.
REST API를 이용해 Unity에서 로그인과 회원가입 시스템을 구현한 예시
https://mozartnt.tistory.com/17
사진 출처 :
https://www.astera.com/type/blog/rest-api-definition/
https://www.infidigit.com/blog/http-status-codes/
'통신' 카테고리의 다른 글
통신 - DNS (1) | 2024.08.13 |
---|---|
통신 - HTTP와 HTTPS (0) | 2024.08.01 |
통신 - TCP/IP와 UDP (0) | 2024.07.29 |
통신이란 ? (0) | 2024.05.01 |