이 글은 REST API를 참고하여 작성된 글입니다.
🤔 REST란 무엇일까?
REpresentational StateTransfer의 약자로, 웹 상에서의 통신 체계에 있어 범용적인 스타일을 규정한 아키텍처이다. 쉽게 말하자면, 어떤 자원에 대해 CRUD(CREATE, READ, UPDATE, DELETE) 연산을 수행하기 위해 요청을 보낼 때, URI를 통해 자원을 표현하고, METHOD를 통해 자원에 대한 행위를 정의하고, 자원의 형태(Representation of Resource) 구성을 REST 라 한다.
🤔 API란 무엇일까?
Application ProgrammingInterface의 약자로, 구글맵 API, 카카오 비전 API와 같이 응용 프로그램을 통해서 데이터를 제공받거나 기능을 사용하고자 할 때 사용하는 인터페이스이다.
즉, REST API 란, REST 한 원칙을 적용하여 API 서비스를 설계한 것을 말한다.
🎛 Rest API의 특징
균등한 인터페이스
REST가 HTTP의 표준만 따른다면 어떠한 기술인지와는 상관없기 때문에 플랫폼이나 언어에 제약받지 않는다.
무상 태성
각각의 요청을 독립적으로 여겨지는 특징이다. 즉, 서버는 클라이언트의 상태를 유지하지 않기 때문에 서버의 자원은 클라이언트의 상태에 맞게 제공하는 것이 불가능하다. 이는, 로그인 유지, 개인 쇼핑 카트 등에 관한 클라이언트의 상태에 관여하지 않고 자원을 제공하는 것과 같다. 이러한 문제는 쿠키나 세션이 담당한다.
캐싱 가능
REST는 HTTP의 표준을 기반으로 설계되었기 때문에 HTTP의 특징인 캐싱을 사용할 수 있다. 가령, GET 메소드를 Last-Modified 의 해더 속성과 함께 요청했다면, 콘텐츠의 변화가 없을 때 캐싱된 값을 사용할 수 있다. 이는 응답 시간뿐만 아니라, 서버에게 요청하는 리소스를 줄일 수 있다.
자체 표현성
REST API는 자원의 표현을 URI, 자원에 대한 행위를 METHOD로 구성되어 있기 때문에 그 자체로도 자원과 행위에 대한 표현이 가능하다.
클라이언트 - 서버 구조
REST서버가 API를 제공해주는 형태이기 때문에, 클라이언트에서 처리하는 부분과는 독립적이다. 이는 서로의 의존성을 줄이고, 클라이언트와 서버가 서로 독립적으로 개발할 수 있게 도와준다.
계층형 구조
REST 서버의 경우, 보안/로드 밸런싱/암호화 등을 추가할 수 있고 Proxy 및 게이트웨이 등의 중간 매체를 사용할 수 있다.
🙆♂️ REST API의 핵심
자원은 URI로 표현되어야 한다. 자원의 이름은 동사가 아닌 명사를 사용한다. 또한, 그 자원에 대한 행위는 HTTP의 메서드로 표현되어야 한다.
'네트워크' 카테고리의 다른 글
[네트워크] 브라우저 주소창에 URL 입력시 일어나는 일들 (0) | 2020.08.30 |
---|---|
[네트워크] 쿠키와 세션에 대해 알아보자. (0) | 2020.08.29 |
[네트워크] URI, URL, URN 그 차이를 알아보자. (0) | 2020.08.29 |
[네트워크] HTTPS란 무엇인가? (0) | 2020.08.28 |
[네트워크] HTTP란 무엇인가? (0) | 2020.08.28 |