REST란 "Representational State Transfer(대표적인 상태 전달)" 의 약자로, 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처 스타일입니다.
REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용함으로써, 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일 입니다.
최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 합니다.
기존의 시스템이나 애플리케이션을 개발자가 아닌 다른 사람이 유지보수 해야하는 경우, 서로의 설계방식이 달라 코드를 분석하는데 많은 어려움이 따릅니다.
따라서 이를 해결하기 위해 많은 사람들 또는 신뢰있는 기고나에서 검증된 보편적인 통합 설계 방법의 양식들을 사용하는데 이것을 아키텍처 스타일 이라고 합니다.
어떤 자원에 대해 CRUD 연산을 수행하기 위해 HTTP URI(Resource)를 통해 GET, POST등의 HTTP 메서드(Method)를 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태로 표현됩니다.
Server-Client (서버 - 클라이언트 구조)
Stateless (무상태성)
Cacheable (캐리 처리 기능)
Layer System (계층 구조)
Uniform Interface (인터페이스 일관성)
Self-Descriptiveness (자체 표현)
API란 (Application Programming Interface)의 약자로, 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다.
REST의 특징을 기반으로 API를 구현한 것입니다. 최근 OpenAPI(누구나 사용할 수 있도록 공개된 API), 마이크로 서비스(하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐) 등을 제공하는 기업 대부분은 REST API를 제공합니다.
URI는 정보의 자원을 표현해야한다.
resource는 동사보다 명사를 사용하며, 영어 소문자 복수형을 사용하여 표현한다.
ex) GET /members/1
자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)으로 표현한다.
URI에 HTTP Method가 들어가면 안된다.
URI 행위에 대한 동사 표현이 들어가면 안된다.
ex) GET /members/show/1 -> GET /members/1
abc
결국 RESTful은 REST라는 아키텍처를 구현하는 웹 서비스를 말합니다. REST 원리를 따르는 시스템을 RESTful 이라고 합니다.
RESTful 의 목적은 이해하기 쉽고 사용하기 쉬운 REST API 를 만드는것이며 퍼포먼스가 중요한 상황에서는 굳이 RESTful API를 구현할 필요가 없습니다.
ex) GET /students/updateName
[참조문헌]
https://github.com/WeareSoft/tech-interview/blob/master/contents/network.md#dns
https://dev-coco.tistory.com/97
https://www.charlezz.com/?p=44767