REST(REpresentational State Transfer)란 웹에 존재하는 모든 자원(resorce, ex. 이미지, 동영상, 데이터)에 고유한 URI를 부여하여 자원에 대한 주소를 지정하는 방법론, 또는 규칙
월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나
사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현 가능
REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작 가능
도큐먼트 : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념
컬렉션 : 서버에서 관리하는 디렉터리라는 리소스
스토어 : 클라이언트에서 관리하는 리소스 저장소
URI는 정보의 자원을 명확하게 표현해야 한다.
자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.
예시) :id는 하나의 특정 resource를 나타내는 고유값
resource 사이에 연관 관계가 있는 경우
예시) /users/{user_id}/profile
파일의 포맷을 나타내기 위한 파일 확장자를 URI에 포함시키지 않는다.
URI의 슬래시(/
)는 resource의 계층관계를 나타내는데 사용한다.
URI 마지막 문자로 슬래시(/
)를 포함하지 않는다.
REST API는 분명한 URI를 만들어 통신을 해야 하기 때문에 혼동을 주지 않도록 URI 경로의 마지막에는 슬래시(/
)를 사용하지 않는다.
불가피하게 URI가 길어지는 경우 하이픈(-
)을 사용하여 가독성을 높이며 밑줄(_)은 URI에 사용하지 않는다.
밑줄은 보기 어렵거나 밑줄 때문에 문자가 가려지기도 하므로 가독성을 위해 밑줄은 사용하지 않는다.
URI 경로에는 소문자가 적합하다.
장점
1. Easy to use(쉬운 사용)
REST API 메시지를 읽는 것만으로도 의도하는 바를 명확하게 파악할 수 있습니다.2. 별도의 인프라 불필요
HTTP 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없습니다.3. 서버와 클라이언트의 역할을 명확하게 분리
Stateless한 특징 때문에 Execution Context가 독립적으로 진행됨으로써 이전에 서버(호스트)에서 진행된 내용들에 대해 클라이언트가 알 필요가 없으며, 이제까지 진행된 히스토리에 대해서도 알 필요가 없습니다. 즉, 해당 URI와 원하는 메서드 자체만 독립적으로 이해하면 됩니다.각자의 역할이 명확하게 분리되어있다는 장점은 단순히 업무량 감소를 넘어 플랫폼의 독립성 확장이라는 효과를 가져오며, HTTP 프로토콜 서비스라는 기본적인 요구만 충족된다면 다양한 플랫폼에서 원하는 서비스를 쉽고 빠르게 개발하고 배포할 수 있습니다.
4. Detail expression for specific data type
REST API는 헤더 부분에 URI 처리 메소드를 명시함으로써, 필요한 실제 데이터를 payload(바디)에 표현할 수 있도록 구성할 수 있는 기능을 제공합니다. 이는 특정 메서드의 세부적인 표현 문구를 JSON, XML 등 다양한 언어를 이용하여 작성할 수 있다는 장점 뿐만 아니라, 간결한 헤더 표현을 통한 가독성 향상이라는 두마리 토끼를 잡는 효과를 가져다 줍니다.단점
1. Restriction of HTTP Method
REST API는 HTTP 메소드를 사용하여 URI를 표현합니다. 이러한 표현 방법은 다양한 인프라에서도 편리하게 사용할 수 있다는 장점을 주지만, 또 한편으로는 메소드 형태가 제한적 이라는 문제점을 가져오기도 합니다.내부 Context를 이용할 수 있습니다. 하지만 이 방법이 모든 부분에서 해결책을 제공하지는 못합니다.
2. Absence of Standard (표준의 부재)
REST API의 가장 큰 단점이라고 할 수 있는데, 바로 표준이 존재하지 않습니다. 관리의 어려움과 좋은(공식화 된) API 디자인 가이드가 존재하지 않아 결국 많은 사람들이 하나씩 쌓아올리는 약속들과 같다고 할 수 있습니다.이 부분에 대해 어떤 사람들은 '확장성과 발전 가능성'을 이야기하지만 표준이 존재하지 않다보니 많이 사용되는 패턴이어도 비효율적이거나 비생산적인 패턴으로 작성되는 경우들이 많습니다.
참고 링크