REST API 등장 이전 WWW의 폭발적인 사용량 증가로 인해 몇 가지 문제점이 생겨나게 되었습니다.(자원 관리, 클라이언트 -서버 결합도) 이에 대한 해결 방법으로 REST가 등장하게 되었습니다.
REST란, 제약조건의 집합으로서 optional한 제약조건을 제외하고 5가지 이상의 제약조건을 모두 만족하면 RESTful하다고 합니다.
API 란? 응용 프로그램에서 사용할수 있도록 운영체제나 프로그래밍 언어에서 제공하는 기능을 제어할수 있게해주는 인터페이스 입니다. 어플리케이션 간에 지정된 형식으로 요청과 응답을 할 수 있도록 연결하는것 입니다.
REST API 는 인터넷 식별자 URI 와 HTTP를 기반으로 하고 브라우저 간 호환성이 좋은 JSON 형식을 주로 사용합니다.
REST의 가장 중요한 특성은 각 요청이 어떤 정보나 동작을 위한 것인지 그 모습 자체만으로 추론이 가능하다는 점 입니다.
HTTP 메소드를 활용해서 해당 자원에 대한 CRUD를 적용합니다.
클라이언트는 요청을 발생시키고, 서버는 요청에 대해 반응합니다.
클라이언트 -> UI의 이식성 집중
서버 -> 확장성에만 집중

서버는 데이터만 전달하면 끝
클라이언트는 데이터를 받아 원하는 UI로 구성하면 끝
요청은 상태를 가지지 않는다는 제약조건
즉, 각각의 요청은 독립적이고 필요한 모든 정보를 제공해야한다(stateless)
쉽게 말해, 서버는 클라이언트가 이전에 무슨 요청을 보냈는지 모른다.

서버는 자원이 캐시 가능한지 명시애햐 한다.

계층형 시스템을 적용해야 한다는 제약조건

클라이언트가 필요에 의해 기능을 확장할 수 있도록 해야한다는 제약조건

갭라을 할 때 클라이언트와 맞닿아 있는부분을 (Http Request, Http Response)쉽고 일반적으로 설계하라는 조건
클라이언트와 서버 사이의 상호작용에서 고유하게 자원을 식별할 수 있어야합니다
표현이란? 특정한 상태의 자원에 대한 표현
원은 다양한 방식으로 표현 가능
EX) 문서 ,파일 http메시지 엔티티
자기서술적인 메세지
자원의 표현을 메시지를 처리하기에 충분한 정보를 제공해야한다.
메시지는 스스로에 대해 설명해야 합니다.
클라이언트는 서버와 상호작용하면서 하이퍼링크를 통해 동적으로 모든
다른 리소스에 접근할 수 있어야 한다는 제약조건