REST(Representational State Transfer)란,
월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식으로,
자원을 정의하고 자원에 대한 주소를 지정하는 방법의 모음을 일컫는다.
... 정의가 한 번에 알아듣기에는 워낙 어렵다보니 천천히 짚어보고 다시 이해해보자 :)
REST는 크게 ①리소스 ②메서드 ③메세지 이렇게 3가지 요소로 구성된다.
예를 들어, "이름이 John인 사용자를 만든다."라는 호출을 분석해보면
https://localhost:8080/users
와 같은 URI(Uniform Resource Identifier)POST http://localhost:8080/users
와 같은 HTTP 메서드 형태 {
"username": "John"
}
내용을 담고 있는 JSON 문서의 형태로 구성된다.
즉, 종합해본다면 REST는 아래와 같은 형식으로 표현될 수 있다.
POST http://localhost:8080/users
{
"username": "John"
}
REST에는 예시의 POST뿐만 아니라, CRUD(Create, Read, Update, Delete)에 해당하는
다음과 같은 4가지 HTTP 메서드(+1)가 있다는 것도 알아두도록 하자.
• PATCH
: PUT과 마찬가지로 리소스를 수정하는데 사용되지만,
PUT에 비해 주의사항이 많으며 지원하지 않는 브라우저가 많다.
위키피디아에 명시된 정의만 보면 다소 복잡해보이지만,
앞서 다룬 개념을 바탕으로 REST란 ①HTTP URI를 통해 리소스를 명시하고, ②HTTP 메서드를 통해
③해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다는 것을 알 수 있다.
다른 블로그에서는 이를 간단히 풀어 URI와 HTTP 메서드를 통해 객체화된 서비스에 접근하는 것이라고 정의 내리는 것도 보았다.
개인적으로는 REST의 구성요소를 하나하나 분리해서 살펴보고 이해하니 그 의미가 좀 더 쉽게 와닿는 것 같다.
(출처: 위키피디아)
API(Application Programming Interface)란,
데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며,
서로 정보를 교환가능 하도록 하는 것이다.
AWS에 설명되어 있는 바로는 다음과 같다.
API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다. 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있습니다. 휴대폰의 날씨 앱은 API를 통해 이 시스템과 ‘대화’하여 휴대폰에 매일 최신 날씨 정보를 표시합니다.
ㅡ AWS(Amazon Web Service)
즉, 컴퓨터 프로그램/소프트웨어 간의 상호작용 및 의사소통을 가능하게 해주는 매개체 정도로 이해하면 될 것 같다.
앞서 REST와 API에 대해 다뤄보았다.
그렇다면 'RESTful API'는 무엇이란 말인가? 단어 그대로 REST한 API를 의미한다.
즉, REST의 특징이나 원칙, 규칙에 알맞게 디자인 된 API라는 것이다.
/
로 계층 관계를 표현한다./
를 포함하지 않는다._
대신 -
을 사용한다.(출처: pjh612's velog)
위의 규칙들이 잘 지켜진 API가 RESTful API가 되는 것이다.
이렇게 디자인 된 RESTful API는 다음과 같은 장/단점을 지닌다.