MongoDB
RESTful API
차돌박이츄베릅
2023. 5. 18. 14:16
REST API란?
어떤 자원에 대해 CRUD를 진행할 수 있게 HTTP Method(GET, POST, PUT, DELETE)를 사용하여 요청을 보내는 것. 이 때, 요청을 위한 자원은 특정한 형태로 표현된다.
URI를 통해 정보의 자원을(only 자원만을) 표현하고, 자원의 행위는 HTTP Method로 명시한다.
- 자원(Resource) : URI
- 행위(Verb) : HTTP Method
- 표현(Representations)
디자인 가이드
- URL은 정보의 자원을 표현해야 함
리소스명은 동사보다 명사를 사용. delete와 같은 행위에 대한 표현이 들어가면 안됨 - 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현
예) 정보를 가져올 땐 GET, 추가할 땐 POST ...
- POST : 생성
- GET : 조회하고 가져오기
- PUT : 수정
- DELETE : 삭제
주의사항
- 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용하고, 마지막 문자로 슬래시(/)를 포함하지 않는다.
/house/apartments
/animals/mammals/whales - 하이픈(-)은 URL 가독성을 높이는데 사용. 밑줄(_)은 가독성 문제로 URL에 사용하지 않는다.
불가피하게 긴 URL경로를 사용하게 된다면 쉽게 읽고 해석하기위해 하이픈 사용해서 가독성을 높일 수 있음 - 소문자 적합
- 확장자 포함시키지 않는다
리소스 간의 관계 표현하는 방법
/리소스명/리소스 ID/관계가 있는 다른 리소스명
GET : /users/{userid}/devices --- 일반적으로 소유(has)의 관계를 표현할 때
관계명이 애매하거나 구체적인 표현이 필요하면 명시적으로 표현할 수 있음
GET : /users/{userid}/likes/devices --- 사용자가 ‘좋아하는’ 디바이스 목록
자원을 표현
컬렉션은 문서들의 집합, 객체들의 집합. 컬렉션은 복수형(-s)으로 사용
도큐먼트는 문서, 한 객체
/sports/soccer --- sports라는 컬렉션과 그 중 soccer라는 도큐먼트로 생각됨
/sports/soccer/13 --- sports, players라는 컬렉션과 soccer, 13을 의미하는 도큐먼트
Path Variable
/users/10
- 이름에서도 유추할 수 있듯, 경로 자체에 변수(10)를 사용한 방법입니다.
- 전체 데이터 또는 특정 하나의 데이터를 다룰 때 처럼, 리소스를 식별하기 위해 사용돼요.
Query Parameter
/users?user_id=10
데이터를 정렬하거나 필터링 하는 경우 더 적합합니다.
Reference
https://meetup.nhncloud.com/posts/92
REST API 제대로 알고 사용하기 : NHN Cloud Meetup
REST API 제대로 알고 사용하기
meetup.nhncloud.com