넘나중요 x100
Representational State Transfer
웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식.
HTTP URI로 정의된 리소스를 HTTP Method + Payload 구조적으로 표현한다.
주식을 예로 들면,
{
'user_id' : 1,
'stocks' : [
'003223',
'232333'
]
}
주식 정보를 받기 위한 HTTP 요청
HTTP GET https://api.trueshort.com/stock/003223
유저의 보유 주식 종목들을 DB에 저장하는 HTTP 요청
HTTP POST https://api.trueshort.com/users/portfolios
GET /user/1 -> GET /users/1
resource
에 대한 행위를 HTTP Method
(GET, POST, PUT, DELETE)
로 표현한다.URL
에 동사가 포함되서는 안된다.resource
사이에 연관 관계가 있는 경우URL
은 /
구분자를 사용하여 자원의 계층관계를 나타낸다.URL
은 마지막 문자로 /
를 포함하지 않는다._
는 사용하지 않는다.GET user/1/profile-photo.jpg
(X)GET user/1/profile-photo
(O)해당 사이트의 특정 자원 위치를 나타내는 유일한 주소
http://velog.io/login
http://velog.io/write
HTTP request가 의도하는 action을 정의한 것
HTTP request에서 server로 보내는 데이터 (body)
물음표 뒤에는 늘 key=value
형식의 문자열이 따라오는데, 이를 Query parameter
라고 한다.
주로 데이터를 조건으로 거르거나filtering
, 특정 방식으로 정렬하거나sorting
, 검색searching
하고자 하는 경우에 활용한다.
/users?id=inah1 # Query Parameters
/users/inah1 # Path Parameters
Path Parameters
는 경로를 변수로서 사용하는 것이다.
/user/django
/user?category=django
django
관련 유저만 필터링한다고 할 때,
django의 관련 유저가 없을 경우 Path Variable
은 404에러를 발생시키는 반면,
Query Parameter
는 빈 리스트를 반환한다. 정렬이나 필터링을 해야하는 상황에서는
Query Parameter
를 사용하는게 Best Practice!
정렬sorting
혹은 필터링filtering
을 할 때 사용
어떠한 resource
를 식별할 때 사용