REST 란?
- Representational State Transfer의 약어이다.
- 웹에 존재하는 모든 자원(문서, 이미지 등)에 고유한 URI를 부여해서 활용하는 것으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법론이다.
- 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있다.
- HTTP 메소드를 통해서 CRUD(Create, Read, Update, Delete) 연산을 수행한다.
- 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나로 자원을 요구하는 쪽이 클라이언트이고, 자원을 가지고 있는 쪽이 서버이다.
URL? URI?
URL은 웹 주소라고도 하며, 실제 파일의 위치를 나타내는 주소를 의미한다.
URI는 특정 리소스를 식별하는 통합 자원 식별자를 의미한다.
URI는 식별하고, URL은 위치를 가르킨다. URI는 URL을 포함하게 된다.
예를 들면, "HONG Gil-dong"은 사람의 이름이며 식별자이다. (URI) "서울 xx구 xxx동 123"은 주소로 특정 위치를 가르킨다. (URL)
REST의 구성 요소
1. 자원(Resource) - URI
- 클라이언트는 URI를 이용해 자원을 지정하고, 해당 자원의 상태에 대한 조작을 서버에 요청한다.
2. 행위(Verb) - HTTP Method
- HTTP 메소드인 GET, POST, PUT, DELETE를 통해 CRUD 연산을 수행한다.
3. 표현(Representation of Resource)
- 서버와 클라이언트가 데이터를 주고 받는 형식은 json, xml, text, rss 등이 있다.
- 주로 key와 value를 활용하는 json과 xml을 주로 사용한다.
REST의 규칙
1. 서버-클라이언트 구조 (Server-Client)
- REST 서버는 API를 제공하고, 클라이언트는 사용자 인증, context(세션, 로그인 정보 등)을 직접 관리한다.
2. 무상태성 (Stateless)
- HTTP 프로토콜은 Stateless Protocol 이므로 REST도 무상태성을 갖는다.
- 클라이언트의 context(세션, 쿠키 등)를 서버에 저장하지 않으므로 서버 구현이 단순하다.
- 서버는 각각 요청을 완전히 별개의 것으로 인식하고 처리한다. 즉, 이전 요청이 다음 요청의 처리에 연관되면 안된다.
3. 캐시 처리 기능 (Cacheable)
- 캐시(Cache) ? 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소이다.
- 웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존 인프라를 그대로 활용할 수 있다. (캐싱 기능도 적용가능)
- 대량의 요청을 효율적으로 처리할 수 있다.
4. 계층 구조 (Layered System)
- 클라이언트는 REST API Server 만 호출한다.
- REST API Server 는 다중 계층으로 구성되어 있으므로 클라이언트는 서버와 직접 통신하는지, 중간 서버와 통신하는지 알 수 없다.
5. 인터페이스 일관성 (Uniform Interface)
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능하다.
6. 자체 표현 (Self-Descriptiveness)
- json 형태의 메시지를 통해서 내용을 직관적으로 이해할 수 있다.
- 요청 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있다.
REST API 란?
- API 란? 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스이다.
- REST API는 REST의 특징을 기반으로 API를 제공하는 것이다.
- 누구나 사용할 수 있도록 공개된 OpenAPI 인 구글 맵, 공공 데이터, 마이크로 서비스 등 대부분이 REST API를 통해 제공한다.
RESTFUL API 란?
- REST의 6가지 규칙을 지켜서 설계된 API를 RESTFUL API 라고 한다.
- 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것을 목적으로 성능이 중요하다면 꼭 restful 하게 구현할 필요는 없다.
'Web > Web' 카테고리의 다른 글
웹 해킹 워게임 사이트 (0) | 2022.11.23 |
---|---|
URL? URI? URN? (0) | 2021.12.10 |
HTTP(HyperText Transfer Protocol) 란? (0) | 2021.11.18 |
WEB 이란? (0) | 2021.11.16 |
댓글