여기서 인터페이스란 어떤 장치간 정보를 교환하기 위한 수단이나 방법을 의미함
대표적인 인터페이스 예로는 마우스, 키보드, 터치패드 등이 있음
Server-client구조
자원이 있는 쪽이 S, 요청하는 쪽이 Client
클라이언트와 서버가 독립적으로 분리되어 있어야 함
Stateless
요청 간의 클라이언트 정보가 서버에 저장되지 않음
서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리
Cacheable
HTTP 프로토콜을 그대로 사용하기 때문에 HTTP 특징인 캐싱기능을 적용
대량의 요청을 효율적으로 처리하기 위해 캐시를 사용
계층화
클라이언트는 서버의 구성와 상관없이 REST API 서버로 요청
서버는 다중 계층으로 구성될 수 있음(로드밸런싱, 보안요소, 캐시 등)
Code On Demand(Optional)
요청을 받으면 서버에서 클라이언트로 모드 또는 스크립트(로직)을 전달하여 클라이언트 기능 확장
인터페이스 일관성
정보가 표준 형식으로 전송되기 위해 구성 요소 간 통합 인터페이스 제공
HTTP 프로토콜을 따르는 모든 플랫폼에서 사용가능하게끔 설계
웹 기반의 REST API를 설계할 경우에는 URI를 통해 자원을 표현해야 함
https://thinkgroud.studio/member/589 Resource : member Resource id : 589
자원에 대한 조작은 HTTP Method(CRUD)를 통해 표현해야 함
- URI에 행위가 들어가면안됨
- HEADER를 통해 CRUD를 표현하여 동작을 요청해야함
메세지를 통한 리소스 조작
- HEADER를 통해 content-type을 지정하여 데이터를 전달
- 대표적 형식으로는 HTML, XML, JSON, TEXT가 있음
URI에는 소문자를 사용
Resource의 이름이나 URI가 길어질 경우 하이픈(-)을 통해 가독성을 높일 수 있음
언더바(_)는 사용하지 않음
파일 확장자를 표현하지 않음