API 시스템을 구현하기 위한 아케텍쳐 중에 가장 널리 사용되는 형식
HTTP method와 URI를 통해서 내가 원하는 Resource를 가져오는 방식
ex)
HTTP method - GET
URI - beverages/1
GET/beverages/1 = 음료들 중 1번 음료 정보를 요청
- URI(Uniform Resource Identifier)
-해당 사이트의 특정 자원의 위치를 나타내는 유일한 주소
-https://OOOOO.naver.com/login
-https://OOOOO.naver.com/news- HTTP Method
-HTTP request가 의도하는 action을 정의한 것- Payload
-HTTP request에서 server로 보내는 데이터(body)
웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식.
REST 방식이 적용된 RESTful API
-삼성전자 주식 정보를 받기 위한 HTTP 요청
HTTP GET https://api.trueshort.com/stock/005930
-유저의 보유 주식 종목들을 DB에 저장하는 HTTP 요청
HTTP POST https://api.trueshort.com/users/portfolios
{
"user_id" : 1,
"stocks" : [
"005930",
"298730",
"378900"
]
}
Self-descriptiveness
그 자체 만으로도 명확하고 간단하게 설명이 가능
URI 정보를 명확하게 표현해야 한다.
resource는 명사를 사용한다.
ex) GET/users/1
resource에 대한 행위를 HTTP Method(GET,POST,PUT,DELETE)로 표현한다.
-URI에 HTTP Method가 포함되서는 안된다.
ex)GET delete/user/1 -> DELETE/users/1
-URI에 동사가 포함되서는 안된다.
ex)GET/user/show/1 -> GET/users/1
ex)POST insert/user/2 -> POST/users/2
resource 사이에 연관 관계가 있는 경우
-/리소스/고유ID/관계 있는 리소스
ex)GET/users/{user_id}/profile
{ } = path parameter
URI는 /
구분자를 사용하여 자원의 계층 관계를 나타내는데 사용한다.
ex)GET users/portfolios
URI 마지막 문자로 /
를 포함하지 않는다.
ex)GET users/portfolios/ (x)
불가피하게 URI가 길어지는 경우 -
을 사용하여 가독성을 높인다.
_
(언더바)는 사용하지 않는다.
URI 경로에는 대문자 사용을 피하도록 규정하고 있다.
파일의 경우 payload의 포맷을 나타내기 위한 파일 확장자를 URI에 포함시키지 않는다.
ex) GET user/1/profile-photo.jpg(x)
ex) GET user/1/profile-photo
(이때, payload의 포맷은 headers에 accept를 사용한다.)
끝!