RESTful API란?
HTTP를 HTTP 답게 쓰자는 권고안.
컴퓨터와 컴퓨터가 네트워크 상에서 소통하는 인터페이스
- 정해놓은 방법
- 스타일 방식
- 디자인 패턴처럼 이렇게 하면 용이하다는 가이드.
URI의 식별자를 이용해서 원하는 데이터를 지칭하고, Http 메소드를 통해 가져올지, 생성할지, 수정할지,삭제할지의 동사를 결정한다. 메소드 (동사) + URI(명사)
사람간의 대화와 마찬가지로 컴퓨터간의 대화도 상호작용이다. 요청으로 대화를 걸었으면 응답으로도 상호작용을 해준다.
서버응답에는 총 세가지를 포함한다.
- 상태표시줄 ( 200 : 일반 성공 응답)
- 메시지 본문( xml이나 json형태의 데이터. 클라이언트에게 제공하는 데이터)
- 헤더 (메시지 본문에 대한 인코딩 정보, 어떤 파일 유형인지, 서버정도등 메타정보)
원칙
- 균일한 인터페이스
- 위에 URI형태(균일한 식별자)나 행위에 대해 메소드를 사용한 것을 의미한다.
- 무상태
- 서버 부하를 최소화 해주기 위한 방법.
- 세션의 정보는 전적으로 클라이언트가 가져야 한다.
- 계층화 시스템
- 서버와 클라이언트의 역할은 명확하게 구분되어야 한다.
- 클라이언트에서 사용자 인증이나 컨텍스트(세션,로그인) 관리를 직접 한다.
- 캐시 가능성
- cache-control 헤드를 통해서 캐시를 사용할지 여부를 명시 해야한다.
- 캐시를 원할 경우 서버는 캐시의 기능을 제공 해줘야 한다. 캐시의 기능은 물론 클라이언트 프로그램에서 수행.
- 온디맨드 코드
- 서버에서 제공하는 javascript는 클라이언트에서 그 자체로 실행 가능 해야한다.
*레이턴시 - 지연시간