분산 시스템 설계를 위한 아키텍처 스타일이다.
시스템 목적을 달성하기위해 시스템의 상호작용등의 시스템디자인에 대한 제약 및 설계
최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템 구성환경등을 설명 및 설계하는 설계도다.
분산 시스템을 위해서이다.
모듈 기능별로 분리하기 쉽다. RESTful API를 서비스하면 다른 모듈 또는 애플리케이션이라도 rest api를 통해 상호 통신하기 쉽기 때문이다.
웹브라우저 외의 클라이언트를 위해서이다
웹페이지를 위한 html 및 이미지등을 보내던것과는 달리 이제는 데이터만 보내면 여러 클라이언트에서 해당 데이터를 적절히 렌더링시키기만 하면된다.
예를 들면 모바일앱에서 html등 정적문서를 모두 보내는것은 무겁고 브라우저가 모든 앱에 있는것은 아니기 때문에 적절하지 않았는데 restAPI를 사용하면서 데이터를 주고 받기 때문에 클라이언트가 자유롭고 부담없이 데이터를 이용할수있다. 마찬가지로 서버측도 클라이언트가 요청한 데이터에 대해서만 응답하면 되기에 가볍고 유지보수가 쉬워졌다.