
REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
즉 REST란
1. HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고,
2. HTTP Method(GET, POST, PUT, DELETE, ..)를 통해
3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다
HTTP 프로토콜을 기반으로 하기 때문에 GET, POST, PUT, DELETE 등 HTTP 메서드를 활용하여 직관적이고 표준화된 요청 방식을 제공한다.
클라이언트와 서버 간의 통신 방식이 명확하다.
REST API는 JSON, XML과 같은 표준 형식을 사용하므로 다양한 언어와 플랫폼에서 쉽게 구현할 수 있다.
클라이언트와 서버가 서로 다른 기술 스택을 사용해도 통신이 가능하다.
클라이언트와 서버가 서로 독립적으로 동작하므로, 서버 로직 변경 시 클라이언트를 수정할 필요가 없거나 최소화된다.
새로운 기능 추가나 확장에 유연하다.
HTTP의 기본 캐싱 메커니즘을 활용할 수 있어, GET 요청 결과를 클라이언트 또는 프록시에서 캐싱하여 성능을 높이고 서버 부하를 줄일 수 있다.
각 요청이 독립적이므로 서버는 클라이언트의 상태를 저장하지 않는다. 이를 통해 서버의 리소스 사용을 줄이고 확장성을 높인다.
URL 설계를 통해 자원을 직관적으로 표현하므로, API의 설계와 사용이 이해하기 쉽다.
HTTP 외에도 다른 프로토콜(TCP, WebSocket 등)을 사용할 수 있는 구조로 설계할 수 있다.
RESTful 이란
RESTful이란 REST의 원리를 따르는 시스템을 의미한다. 즉, RESTful API는 자원을 URI로 명확히 표현하고 HTTP 메서드를 사용하여 자원을 조작하는 API이다.
만약 이들 중 하나라도 지켜지지 않는다면 이를 REST API라고 할 수 없다
cache-control 헤더)/users->사용자 리스트, /users/{id}->특정 사용자)계층이란
- 로드 밸런서 : 요청을 여러 서버로 분산시키는 역할
- 프록시 : 보안 또는 요청 캐싱을 처리
- 게이트웨이 : 클라이언트 요청을 적절히 다른 서버로 전달

아래 그림에서 볼 수 있듯이, URI는 URL과 URN을 포함하고 있다. 이들의 각 뜻은 다음과 같이 정의할 수 있다
URI는 리소스를 식별하기 위한 모든 것이다.
https://example.com, isbn:978-3-16-148410-0URL은 URI의 한 종류로 리소스의 위치(주소)를 나타낸다
http, https, ftp, ..)example.com)/page.html)?id=1234)URN은 URI의 또 다른 하위 유형으로, 리소스의 이름을 나타낸다
urn:isbn:978-3-16-148410-0->책의 isbn번호, urn:uuid:123e4567-e89b-12d3-a456-426614174000 -> UUID정리
- URI는 인터넷 상에서 특정 자원을 가리키는 식별자
- URI의 두 가지 형태로 URL과 URN이 있다
- URL은 특정 시점에서 자원의 구체적인 위치를 나타내는데, 만약 자원의 위치가 변경되면 기존 URL은 더 이상 사용 불가능하다는 단점이 있다
- URN은 이러한 URL의 단점을 보완하기 위해 새롭게 정의된 표준인데, URN은 자원에 대해 영속적이고 고유한 식별자를 뜻한다
출처 : https://velog.io/@hyosss/REST-API-REST-API%EC%9D%98-%EC%A0%9C%EC%95%BD-%EC%A1%B0%EA%B1%B4%EB%93%A4
https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-URL-URI-%EC%B0%A8%EC%9D%B4