REST API URI 설계 원칙 (RFC-3986)
목차
URI 설계 규칙
| 규칙 | 올바른 예 | 잘못된 예 |
|---|---|---|
슬래시(/)는 계층 관계 표현 | /vehicles/suv/q6 | — |
URI 마지막에 / 미포함 | /vehicles/suv/q6 | /vehicles/suv/q6/ |
하이픈(-)으로 가독성 향상 | /vehicles/suv/qseries/6 | — |
밑줄(_) 사용 금지 | /vehicles/suv/q6 | /vehicles/suv/q_series/6 |
| 소문자 사용 | /vehicles/suv/q6 | /Vehicles/SUV/Q6 |
| 파일 확장자 미포함 | /vehicles/suv/q6 | /vehicles/suv/q6.jsp |
| 언어 의존적 확장자 미사용 | /vehicles/suv/q6 | /vehicles/suv/q6.do |
| 구현 의존적 경로 미사용 | /vehicles/suv/q6 | /servlet/vehicles/suv/q6 |
| 세션 ID 미포함 | /vehicles/suv/q6 | /vehicles/suv/q6?session-id=abcdef |
| Method명 미사용 | /vehicles/suv/q6 | /vehicles/suv/q6?action=intro |
| 명사는 복수형 사용 | /vehicles/suv/q6 | /vehicle/suv/q6 |
| 컨트롤러는 동사/동사구 | /vehicles/suv/q6/re-order | — |
| CRUD는 HTTP 메서드로 표현 | DELETE /vehicles/q7/{car-id} | GET /vehicles/q7/delete/{car-id} |
변하는 경로 부분
/vehicles/suv/q7/{car-id}/users/{user-id}/release
/vehicles/suv/q7/117/users/steve/releaseQuery Parameter 설계
# 필터링
/vehicles/suv?model=q7
# 페이지네이션
/vehicles/suv?page=0&size=10&sort=asc서브 도메인 일관성
https://foo.co.kr
https://api.foo.co.kr
# 개발자 포탈
https://dev-api.foo.co.kr/vehicles/suv/q6