Representational State Transfer
란 웹에 존재하는 모든 자원에 대한 고유한 URI를 부여하여 자원에 대한 주소를 지정하는 방법론 또는 규칙이다.- API 시스템을 구현하기 아키텍처 중 가장 널리 사용되는 형식이다.
- URI
👉Uniform Resource Identifier
👉 해당 사이트의 특정 자원의 위치를 나타내는 주소이다.
👉 ex) finance.naver.com/login- HTTP Method
👉 HTTP request 가 의도하는 action을 정의하는 것이다.- Payload
👉 HTTP request 에서 서버로 보내는 데이터를 말한다. (body)
- 웹상에서 사용되는 여러 리소스를
HTTP URI
로 표현하고 그 리소스에 대한 행위를HTTP Method
로 정의하는 방식이다.- 리소스(HTTP URI로 정의된)를 어떻게 한다(HTTP Method + Payload)를 구조적으로 깔끔하게 표현한다.
Self-Descriptiveness
- 그 자체만으로 명확하게 API 의 목적이 쉽게 이해가 된다.
- URI 정보를 명확하게 표현하다.
👉resource
를 명사로 표현한다.
👉 ex) GET /user/1 -> GET /users/1resource
에 대한 행위를HTTP Method
(GET, POST, DELETE) 로 표현한다.
👉URI
에HTTP Method
가 포함되면 안된다.
👉URI
에 동사가 포함되면 안된다.
👉 ex) GET /user/show/1 -> GET /users/1resource
사이에 연관 관계가 있는 경우
👉 ex) GET /users/{user_id}/profile
URI
는/
구분자를 사용하여 자원의 계층 관계를 나타내는데 사용한다.URI
마지막 문자로/
를 사용하지 않는다.- 불가피하게
URI
길어지는 경우-
를 사용하여 가독성을 높인다._
는 사용하지 않는다URI
경로에는 대문자 사용을 피하도록 규정하고 있다.- 파일의 경우
payload
의 포맷을 나타내기 위한 파일 확장자를URI
에 포함하지 않는다.