포스트

[Web] URL 구조 정리: 구성 요소와 읽는 법

[Web] URL 구조 정리: 구성 요소와 읽는 법

URL(Uniform Resource Locator)은 인터넷 상의 자원(Resource)이 어디에 있는지를 나타내는 주소이다.

웹 개발에서는 URL을 단순히 복사해 붙이는 수준을 넘어, 각 구성 요소가 무엇을 의미하는지 이해하는 것이 중요하다.
특히 라우팅, 검색(SEO), 캐시, 보안, API 설계에서 URL 구조는 자주 설계 대상이 된다.



URL의 기본 형태

URL은 일반적으로 다음과 같은 구조를 가진다.

URL 구조 예시

이미지 출처 : https://lxxyeon.tistory.com/85



프로토콜(Scheme)

  • http 또는 https처럼 통신 방식을 지정한다.
  • 오늘날 일반적인 서비스는 보안을 위해 https 사용이 기본이다.


호스트(Host)와 도메인

  • www.google.com이 호스트에 해당한다.
  • 호스트는 보통 도메인 이름으로 표현되며, 내부적으로는 DNS를 통해 IP 주소로 변환되어 연결된다.

아래 이미지에서 도메인을 더 잘게 나누면 다음처럼 이해할 수 있다.

호스트

이미지 출처 : https://blog.mailplug.com/647

  • www : 서브도메인(서버/서비스 구분 용도)
  • mailplug : 2단계 도메인(조직/서비스 이름)
  • com : 최상위 도메인(TLD)

서브도메인은 필수가 아니며, 서비스 정책에 따라 www를 사용하지 않기도 한다.



경로(Path)

  • /search/food.html이 경로에 해당한다.
  • 과거에는 실제 파일 위치와 유사했으나, 현재는 라우팅 규칙에 따라 의미 있는 경로로 설계되는 경우가 많다.

예:

  • /posts/123 (게시글 상세)
  • /job-postings/42 (채용 공고 상세)


포트(Port)

  • :443, :80처럼 호스트 뒤에 붙는다.
  • 기본 포트(HTTP 80, HTTPS 443)는 보통 생략된다.

예:

  • https://example.com:443 (대개 생략)
  • http://example.com:8080 (개발 서버에서 흔함)


쿼리 스트링(Query String)

  • ?key=value 형태로 조회 조건/옵션을 전달한다.
  • 여러 개면 &로 연결한다.

예:

  • /products?sort=price&order=desc
  • /posts?page=2


프래그먼트(Fragment)

  • #section 형태로 문서 내부 위치(앵커) 이동에 사용된다.
  • 전통적으로 프래그먼트는 서버로 전달되지 않고 브라우저에서 처리된다.

예:

  • /docs#install
  • /post/123#comments


URL 설계에서 자주 쓰는 원칙

1) 자원은 Path, 조건은 Query로 분리한다

  • 자원(무엇을): Path
  • 조건/정렬(어떻게 보여줄지): Query

예:

  • /products/123
  • /products?sort=price


2) 읽기 쉬운 경로를 사용한다

  • 의미가 드러나는 단어를 사용하면 공유/검색/유지보수에 유리하다.

예:

  • 좋음: /job-postings/123
  • 덜 좋음: /jp?id=123 (축약 자체는 가능하나 의미가 약해질 수 있음)


3) 표기 규칙을 통일한다

  • 소문자 사용
  • 단어 구분은 하이픈(-) 사용
  • 트레일링 슬래시(/posts vs /posts/) 정책을 정해 통일


마무리

URL은 단순한 주소가 아니라, 자원의 의미와 접근 방식을 함께 담는 설계 요소이다.
프로토콜, 호스트(도메인), 경로, 쿼리, 프래그먼트의 역할을 구분해 두면 라우팅과 API 설계가 명확해지고, 결과적으로 유지보수성과 사용자 경험 모두에 도움이 된다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.