💡 경로란 특정 리소스(파일, 페이지, API 등)가 어디 있는지 나타내는 주소다. 우리가 평소에 쓰는 파일 탐색기의 폴더 경로와 같은 개념이다. 웹에서 경로는 크게 두 가지로 나뉘는데, 이를 절대 경로와 상대 경로라고 한다.
절대 경로(Absolute Path)
💡절대 경로는 항상 기준점(루트)에서부터 시작하는 경로이다. 파싱 시점에 현재 컨텍스트를 참조하지 않기 때문에, 어느 페이지에서 호출하든 항상 동일한 리소스를 가리키며, 웹에서 절대 경로는 두 가지 형태로 쓰인다.
파싱(Parsing)과 컨텍스트(Context)
💡 파싱(Parsing)은 텍스트를 해석, 분석하는 것이다. ↳ "/api/users"의 문자열을 브라우저가 읽고 어디로 요청을 보낼까? 해석하는 과정이다.
💡 컨텍스트(Contexxt)는 현재 나의 위치가 어디있는지에 대한 정보이며 기준은 마지막 슬래시 이전까지이다. ↳ 현재 페이지 URL = http://localhost:8080/admin/dashboard
절대경로 사용 형태
✔️ 프로토콜 포함 - 도메인까지 명시 https://example.com/api/users
✔️ 루트 상대 경로 - 도메인 기준, 프로토콜, 도메인 생략 /api/users
🎈 루트 상대 경로 형태인 /api/users는 프로토콜과 도메인을 생략하지만 앞의 /가 도메인 루트에서 해석하라는 명시적 신호이므로 절대 경로로 분류한다.
상대 경로(relative path)
💡현재 문서(document)의 URL을 기준으로 해석되는 경로이다. 기준점이 고정되지 않기 때문에, 같은 경로 문자열이라도 호출 위치에 따라 실제 요청 URL이 달라진다
예시
💡현재 URL의 마지막 세그먼트를 기준으로 해
의도와 다른 경로로 요청
✔️ 현재 페이지 : http://localhost:8080/admin/dashboard ✔️ 요청 : api/users ✔️ 실제 해석 : http://localhost:8080/admin/api/users ← 의도한 경로x
절대 경로로 수정
✔️ 현재 페이지 : http://localhost:8080/admin/dashboard ✔️ 요청 : /api/users ✔️ 실제 해석 : http://localhost:8080/api/users ← 항상 올바른 경로
정리
🎈 절대 경로는 항상 루트(/)부터 시작하며, 어떤 페이지에서 호출하든 동일한 리소스를 가리킨다. 그렇기에 예측 가능하고 안전하다. 하지만 상대 경로는 현재 위치를 기준으로 하기에 페이지 페이지 위치가 달라지면 경로도 달라져 구조가 단순하고 고정적일 때만 쓰는 게 안전하다.
❗실무에서는 특별한 이유가 없는 한 절대 경로를 쓰는 것이 기본이다. 상대 경로는 예상치 못한 404의 원인이 된다.