# REST (Representational State Transfer) 주고 받는 자원(resource)에 이름을 규정하고 URI에 명시해 HTTP메서드(GET, POST, PUT, DELETE)를 통해 해당 자원의 상태를 주고받는 것을 의미합니다. REST 아키텍쳐를 구현하는 웹 서비스를 **RESTful**하다고 표현합니다. ## 특징 - 유니폼 인터페이스 REST 서버는 HTTP 표준 전송 규약을 따르기 떄문에 프로그래밍 언어나 플랫폼에 상관없이 사용할 수 있습니다. - 무상태성 서버에 상태 정보를 따로 보관하거나 관리하지 않는다는 의미입니다. - 캐시 가능성 HTTP의 캐싱 기능을 적용할 수 있습니다. - 레이어 시스템 REST 서버는 네트워크 상의 여러 계층으로 구성될 수 있습니다. 클라이언트는 서버와 연결되는 포인트만 알면 됩니다. - 클라이언트-서버 아키텍쳐 REST 서버는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리해 설계합니다. ## URI 설계 규칙 - URI의 마지막에는 '/'를포함하지 않습니다. - 언더바(\_)는 사용하지 않습니다. 대신 하이픈(-)을 사용합니다. - URI에는 행위(동사)가 아닌 결과(명사)를 포함합니다. 행위는 HTTP 메서드로 표현할 수 있어야 합니다. - URI는 소문자로 작성해야 합니다. - 파일의 확장자는 URI에 포함하지 않습니다. 대신 HTTP의 Accept 헤더를 사용하는 것이 좋습니다.