- REpresentational State Transfer라는 용어의 약자입니다.
- 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 발표되었습니다.
- Resource (자원) - URI
- Verb (행위) = HTTP Method
- Representations (표현)
- Uniform Interface는 URI로 지정한 Resource에 대한 조작을 통일하고
한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다.
- REST는 무상태성을 갖습니다.
- 다시 말해, 작업을 위한 상태 정보를 따로 저장하여 관리하지 않습니다.
- 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 단순히 들어오는 요청만을 처리하면 됩니다.
- 이로 인해, 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않아 구현이 단순해집니다.
- REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹 표준을 그대로 사용하여,
웹에서 사용하는 기존 인프라를 그대로 활용할 수 있다는 것입니다. - 따라서, HTTP가 가진 캐싱 기능을 적용할 수 있습니다.
- HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현이 가능합니다.
- REST API 메시지만 보고도 이를 쉽게 이해할 수 있는 자체 표현 구조로 되어있다는 뜻입니다.
- REST 서버는 API 제공,
클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로
각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로 간의 의존성이 줄어듭니다.
- 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있습니다.
- 또한, Proxy, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있습니다.
REST API 설계시 가장 중요한 항목은 다음 2가지로 요약할 수 있습니다.
- URI는 정보의 자원을 표현해야 합니다.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현합니다.
-
슬래시 구분자(/)는 계층 관계를 나타내는데 사용합니다.
-
URI 마지막 문자로 슬래시(/)를 포함하지 않습니다.
-
하이픈(-)은 URI 가독성을 높이는데 사용합니다.
-
언더바(_)는 URI에 사용하지 않습니다.
-
URI 경로에는 소문자가 적합합니다.
-
파일 확장자는 URI에 포함시키지 않습니다.