콘텐츠로 이동

URL

클라이언트가 HTTP 요청을 보내려면 먼저 어디에 요청을 보낼지 정해야 합니다. 예를 들어 example.com의 첫 화면을 요청할 수도 있고, 특정 게시글이나 사용자 정보를 요청할 수도 있습니다.

이처럼 인터넷에서 서버와 원하는 자원을 가리키는 주소를 URL(Uniform Resource Locator)이라고 합니다. 웹 사이트에 접속하기 위해 웹 브라우저의 주소창에 URL을 입력하는 것과 같이 HTTP 요청을 할 때 URL은 요청할 대상을 정하는 중요한 정보입니다.

앞에서 요청 메시지의 예시에서 봤던 GET / HTTP/1.1의 /도 URL의 일부입니다. 이제 URL이 어떤 요소로 구성되고, HTTP 요청과 어떻게 연결되는지 살펴보겠습니다.

Resource

웹에서 자원(Resource)은 URL로 구분하고 요청할 수 있는 대상을 뜻합니다. 웹 페이지, 이미지, 게시글 데이터처럼 서버가 제공하는 다양한 것이 자원이 될 수 있습니다.

경로

URL에서 도메인 뒤에 붙는 /부터의 부분을 경로(Path)라고 합니다. 경로는 서버에서 어떤 화면이나 데이터에 요청을 보낼지 구분하는 역할을 합니다.

https://example.com/          → /
https://example.com/posts     → /posts
https://example.com/posts/1   → /posts/1

예를 들어 https://example.com/에 요청하면 경로는 /이고, 보통 웹 사이트의 첫 화면을 요청합니다. https://example.com/posts에 요청하면 posts(게시글)와 관련된 데이터나 기능을 요청할 수 있습니다.

쿼리 파라미터

같은 경로에 요청하더라도, 클라이언트가 서버에 조회에 대한 추가 조건을 전달해야 할 때가 있습니다. 예를 들어 게시글 목록을 요청하면서 몇 번째 페이지를 볼지, 어떤 순서로 정렬할지, 어떤 검색어로 찾을지와 같은 조건을 함께 전달할 수 있습니다.

이처럼 URL에 추가 정보를 담는 부분을 쿼리 파라미터(Query Parameter)라고 합니다. 경로 뒤에 ?를 붙여 시작하며 키=값 형태로 작성합니다.

https://example.com/posts?page=2&sort=latest

위 URL에서 경로는 /posts이고, 쿼리 파라미터는 page=2와 sort=latest입니다. 여러 쿼리 파라미터는 &로 구분합니다. 각 쿼리 파라미터의 의미는 다음과 같습니다.

  • page=2: 게시글 목록의 두 번째 페이지를 요청합니다.
  • sort=latest: 게시글을 최신순으로 정렬해 달라는 조건입니다.

클라이언트가 쿼리 파라미터를 보낸다고 해서 서버가 이를 무조건 조회에 반영하는 것은 아닙니다. 어떤 쿼리 파라미터를 사용할지와 어떻게 처리할지는 서버에서 결정합니다.

Query

쿼리(Query)는 일반적으로 데이터에 대해 질문하거나 필요한 정보를 찾아보는 조회를 뜻합니다. 데이터베이스에서 원하는 데이터를 찾을 때도 Query라는 표현을 자주 사용합니다.

HTTP 요청 메시지에서 URL

웹 브라우저 주소창에는 보통 전체 URL을 입력합니다.

https://example.com/posts?page=2&sort=latest

위의 HTTP 요청을 실제 메시지 형식에 맞게 다시 작성하면 아래와 같습니다. HTTP 요청 메시지에서는 경로와 쿼리 파라미터는 시작줄에, 서버의 도메인은 Host 헤더에 나누어 담습니다.

GET /posts?page=2&sort=latest HTTP/1.1
Host: example.com
  • 시작줄
    • 경로: /posts
    • 쿼리 파라미터: page=2, sort=latest
  • 헤더
    • 서버 도메인: Host: example.com

실습 과제

다음 문장이 맞으면 O, 틀리면 X를 선택하세요.

  1. URL의 경로는 서버에서 어떤 화면이나 데이터에 요청할지 구분하는 역할을 한다.
  2. 클라이언트가 쿼리 파라미터를 보내면 서버는 반드시 해당 조건을 처리해야 한다.
  3. 일반적인 HTTP 요청 메시지에서는 URL의 경로와 쿼리 파라미터가 시작줄에, 서버 도메인이 Host 헤더에 들어간다.
정답·해설
  1. O — 경로는 서버에서 요청할 화면, 데이터, 기능 등을 구분하는 역할을 합니다.
  2. X — 서버가 어떤 쿼리 파라미터를 사용할지와 어떻게 처리할지 결정합니다.
  3. O — 경로와 쿼리 파라미터는 시작줄에, 서버 도메인은 Host 헤더에 나누어 표현합니다.