티스토리 뷰

728x90

✅ Path Variable이란?

path variable은 URL 경로의 일부로 동적인 값을 전달하기 위한 방법입니다. 예를 들어 /users/123에서 123은 id라는 path variable입니다. RESTful API에서 자원을 명확하게 식별하기 위한 URL 패턴으로 널리 사용됩니다.


1. Path Variable을 사용하는 이유

① RESTful한 API 설계

  • GET /users/123: ID가 123인 사용자를 조회
  • DELETE /products/987: ID가 987인 상품 삭제
  • HTTP 메서드(GET, POST, PUT, DELETE)와 결합하여 자원 중심의 API 구조를 설계할 수 있습니다.

② 자원의 명확한 식별

  • URL을 통해 특정 자원을 바로 가리킵니다.
  • 예: /articles/2024, /orders/1001/items/3

③ 깔끔하고 직관적인 URL 구조

  • /users/10 vs /users?id=10 → 더 직관적이고 구조화된 표현 가능

④ 라우팅 및 처리 최적화

  • 대부분의 웹 프레임워크(Spring, Express, FastAPI 등)에서 라우팅을 빠르고 효율적으로 처리할 수 있도록 최적화되어 있음.

⑤ 계층 구조 표현에 유리

  • /companies/1/departments/2/employees/3처럼 자원의 계층적 관계를 표현 가능

⑥ SEO와 공유에 유리

  • 의미 있는 URL을 통해 검색엔진 최적화(SEO) 및 사용자에게 가독성 높은 링크 제공

2. 대규모 시스템에서의 영향 및 고려사항

✅ 성능 및 구조적 장점

🔹 빠른 라우팅 처리

  • path variable은 정적 라우팅보다 느릴 수 있지만 대부분의 프레임워크에서 정규식 기반으로 고성능 매칭 최적화를 지원

🔹 캐싱 최적화에 유리

  • URL 자체에 고유성이 있으므로 CDN 또는 Reverse Proxy 캐시 키로 활용하기 좋음
    • 예: /products/123 → 상품 상세페이지 캐싱

⚠️ 확장성과 유지보수에서의 주의사항

🔸 URL 구조의 과도한 복잡성

  • 너무 많은 중첩된 path variable은 유지보수 어려움
  • 예: /a/b/c/d/e/f/{id} → 명세 관리와 테스트 복잡도 상승

🔸 민감 정보 노출 가능성

  • path variable은 URL에 그대로 노출되므로, 로그, 히스토리, 서버 로그 등에 민감정보가 남을 수 있음
  • 주민번호, 암호화되지 않은 사용자 정보 등은 query/body에 담아야 안전함

🔸 API 버전 관리 어려움

  • 구조를 잘못 설계하면 확장 시 전체 URL을 변경해야 할 수 있음
    • /v1/users/123 → /v2/users/123/details처럼 버전 전략 명확히 필요

🔸 문서화와 명세화 어려움

  • Swagger/OpenAPI 등을 활용해 명확하게 정의해야 협업 및 유지보수가 수월함

3. Best Practices (대형 시스템 대응 전략)

항목 권장 사항
URL Depth 가급적 2~3단계로 유지
Query vs Path 리소스 ID는 path, 필터/정렬은 query param
민감 정보 path로 전달하지 말고 query/body로 대체
API 문서화 OpenAPI(Swagger), Postman 등으로 명세화
캐싱 전략 path 기반 캐시 키 활용 (CDN, Nginx 등)
버전 관리 /v1/, /v2/ 명확히 구분하여 확장성 확보

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함