본문 바로가기
CS 기본 지식

URL과 URI 의 차이

by khds 2022. 2. 22.

웹 개발을 하다 보면 URL와 URI를 자주 듣는다. URL을 기본으로 많이 들어왔기에 'URI도 URL이다'라고 생각을 하는 경우가 많았다. 엄밀하게 말하자면 URL은 URI의 하위 개념이기에 혼용해도 무방하다. 

 

URL(Uniform Resource Locator)은 '이 곳에 가면 당신이 원하는 것을 찾을 수 있다'와 같은 상징적인 의미가 좀 더 강하다면, URI(Uniform Resource Identifier)은 '당신이 원하는 곳의 주소는 여기이다'와 같이 좀 더 현실 적이고 구체적인 의미가 있다. URI의 'I'는 마치 데이터베이스의 PK와 같은 의미로 사용된다고 생각할 수 있다. 

 

간단히 말하자면 URL은 자원이 실제로 존재하는 위치를 가리키며, URI는 자원의 위치뿐만 아니라 자원에 대한 고유 식별자로서 URL의 의미를 포함한다.

 

URL과 URI는 Path Variable와 Query String 를 통해 구분할 수 있다.

 

우리는 웹 개발을 할 때 Path Variable 와 Query String이라는 용어를 들어봤을 것이다. 

 

Path Variable은 특정경로에 추가적으로 구분을 위한 경로처럼 보이는 변수를 추가하여 특정 자원을 보여주는 것이고 아래와 같은 방식이다. 

 

/user/1
/user/2
/user/3

 

Query String는 사용자가 입력 데이터를 전달하는 방법 중의 하나로, url 주소에 미리 협의된 데이터를 파라미터를 통해 넘기는 것을 말한다. 아래와 같은 방식이다.

 

/user?job=student
/user?job=student&age=10

 

 

그렇다면 아래의 예시를 봐보자.

1) http://localhost:8080/index

 

위의 예시에서는 localhost:8080 에서 index라는 경로를 나타내고 있다.
서버에서는 해당 라우팅에대한 알맞은 자원을 전송해줄 것이며 이는 자원의 실제 위치이므로 URL이다.

 

2) http://localhost:8080/user/1

 

위의 예시에서는 localhost:8080 에서 1의 ID값을 가지고 있는 자원을 식별하고 있다. 따라서, localhost:8080/user 까지는 자원의 실제 위치이기 때문에 URI임과 동시에 URL이며 끝의 /1 부분은 식별자이므로 http://localhost:8080/user/1은 URL(http://localhost:8080/user/)을 포함한 URI라고 볼 수 있다.

 

3) http://localhost:8080/user?id=1

 

위의 예시에서 마찬가지로 http://localhost:8080/user 까지는 자원의 실제 위치를 나타내기 때문에 URL이라고 할 수 있으며, 뒤의 쿼리 스트링 식별자(? id=1)를 포함하여 URI라고 볼 수 있다.

 

참고

https://velog.io/@torang/URL%EA%B3%BC-URI%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

URL과 URI의 차이점

RESTFul API에 대해서 공부를 하다보면 URI라는 표현을 종종 사용한다. 언뜻보면 URL이랑 차이점이 없어보이지만 세세하게 따지고들면 엄연한 차이가 있다. 결론부터 말하면 URI는 URL의 의미를 품고

velog.io

 

코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단