[WEB] RESTful API

inah-_-·2021년 3월 19일
0

WEB

목록 보기
8/12
post-thumbnail

넘나중요 x100

RESTful API🚀

REST

Representational State Transfer
웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식.
HTTP URI로 정의된 리소스를 HTTP Method + Payload 구조적으로 표현한다.

REST 방식이 적용된 RESTful API

주식을 예로 들면,

저장에 필요한 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

RESTful API 설계 규칙

  • URL 정보를 명확하게 표현해야 한다.
  • resource는 명사를 사용한다.
GET /user/1 -> GET /users/1
  • resource에 대한 행위를 HTTP Method (GET, POST, PUT, DELETE)로 표현한다.
  • URL에 동사가 포함되서는 안된다.
  • resource 사이에 연관 관계가 있는 경우
  • URL/ 구분자를 사용하여 자원의 계층관계를 나타낸다.
  • URL은 마지막 문자로 /를 포함하지 않는다.
  • _는 사용하지 않는다.
  • 불가피하게 URI가 길어지는 경우 -을 사용하여 가독성을 높인다.
  • URI 경로에는 대문자 사용을 피한다.
  • 파일의 경우 Payload의 포맷을 나타내기 위한 파일 확장자를 URI에 포함시키지 않는다.
    GET user/1/profile-photo.jpg(X)
    GET user/1/profile-photo (O)

URI (Uniform Resource Identifier)

해당 사이트의 특정 자원 위치를 나타내는 유일한 주소
http://velog.io/login
http://velog.io/write

HTTP Method

HTTP request가 의도하는 action을 정의한 것

Payload

HTTP request에서 server로 보내는 데이터 (body)




Query Parameters (GET)

물음표 뒤에는 늘 key=value 형식의 문자열이 따라오는데, 이를 Query parameter라고 한다.
주로 데이터를 조건으로 거르거나filtering, 특정 방식으로 정렬하거나sorting, 검색searching하고자 하는 경우에 활용한다.

Path Parameters ()

/users?id=inah1 # Query Parameters

/users/inah1    # Path Parameters

Path Parameters는 경로를 변수로서 사용하는 것이다.


Query vs Path 정리

/user/django
/user?category=django

django 관련 유저만 필터링한다고 할 때,
django의 관련 유저가 없을 경우 Path Variable은 404에러를 발생시키는 반면,
Query Parameter는 빈 리스트를 반환한다. 정렬이나 필터링을 해야하는 상황에서는
Query Parameter를 사용하는게 Best Practice!

Query

정렬sorting 혹은 필터링filtering을 할 때 사용

Path

어떠한 resource를 식별할 때 사용

profile
삽질은 의미가 있다🥴

0개의 댓글