REST(REpresentaional State Transfer)
REST란 Representational State Transfer의 약자로, 어떠한 표현에 의한 리소스의 현재 상태를 전송하는 것으로, 웹의 아키텍처 스타일이다.
REST의 구성은 다음과 같다.
🧡 자원(Resource)
리소스란 클라이언트와 서버가 주고 받고자 하는 모든 정보. 이는 텍스트, 이미지, 영상, 데이터 등 모든 것이 포함된다.
uri : 통합 자원 식별자(Uniform Resource Identifier)로, 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스
💛 행위(Verb)
REST에서의 행위는 HTTP Method를 말함.
HTTP Protocol은 GET, POST, PUT, PATCH, DELETE의 Method를 제공한다.
💚 표현(Representation)
클라이언트와 서버가 리소스를 주고 받을 때, 실제로는 주고 받는 것이 리소스는 아니다. 정확히는 해당 리소스가 특정한 방식으로 표현된 것을 말한다.
클라이언트와 서버가 데이터를 주고받는 형태로 JSON, XML 등이 있다.
종합해보면, REST는 HTTP 규약을 준수하며 클라이언트와 서버 간에 행위(Verb)를 통해 특정한 표현(Representation)으로 나타난 자원(Resource)을 주고받는 것이다.
REST의 특징
🧡 Stateless (무상태성)
REST는 무상태성 성격을 지닌다. 이는 클라이언트의 세션 정보나 쿠키 정보를 신경쓰지 않고 서버는 단순히 들어오는 요청만을 처리할 수 있게 된다. 따라서 서버에서는 API의 구현이 단순해지고 자유도가 높아지게 된다.
💛 Cacheable (캐싱 가능)
REST는 웹 표준 HTTP를 그대로 사용하기에 HTTP가 가진 캐싱 기능을 적용할 수 있다.
HTTP 표준에서 사용하는 Last-Modified 태그나 E 태그를 이용하여 구현 가능하다.
💚 Self-Descriptiveness (자체 표현 구조)
REST를 적용한 API는 Verb만을 보고 해당 API가 어떤 기능을 하는지 직관적으로 명확하게 알 수 있다.
💙 Client - Server 구조
서버는 REST API를 제공하고, 클라이언트는 세션과 쿠키를 관리하는 구조로 명확히 두 측의 역할이 구분되어 의존성이 줄어든다.
REST API?
✔ API란?
Application Programming Interface의 약자
두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘
가게에서의 소통 창구 혹은 직원의 역할을 한다.
🔶 REST API
REST API란 말 그대로 REST 형식을 잘 지킨 API라고 할 수 있다. 이러한 형식을 'RESTful하다' 라고 한다.
URI 설계 시 주의점
💖 1. URI는 정보의 자원을 표현해야 한다. 리소스에 집중한다.
💘 2. 자원에 대한 행위는 HTTP Method(Get, Post, Put, Delete)로 나타낸다.
URI 설계 시 주의할 점
슬래시 구분자(/)는 계층 관계를 나타내는 데 사용하며, 마지막에 붙이지 않는다.
단어의 연결에 언더바( _ ) 대신 하이픈( - )을 사용한다.
대문자 대신 소문자를 사용한다.
파일 확장자는 URI에 포함시키지 않는다.
행위를 포함하지 않는 대신 Http Method(Get, Post, Put, Delete)로 표현한다.