네트워크/HTTP

HTTP 메서드: GET 메서드

shimdh 2025. 3. 5. 09:51
728x90

웹을 통해 데이터를 요청하고 조회하는 가장 일반적인 방법은 GET 메서드를 사용하는 것입니다. GET 메서드는 클라이언트(예: 웹 브라우저, 모바일 앱, API 요청자)서버에서 특정 리소스를 요청할 때 사용되는 HTTP 메서드입니다.

웹 사이트를 방문하거나, 검색 기능을 이용하거나, API에서 데이터를 조회할 때 GET 요청이 실행됩니다. 이러한 특성 때문에 GET 메서드는 웹의 기본적인 동작 원리를 이해하는 데 매우 중요한 개념입니다.


1. GET 메서드의 기본 개념

GET 메서드는 주로 서버의 데이터를 조회하는 데 사용되며, 서버의 리소스를 변경하지 않고 읽기 전용 역할을 합니다.

리소스 접근

GET 메서드는 특정 URL을 통해 서버에서 데이터를 요청하는 방식으로 동작합니다. 예를 들어:

GET /products HTTP/1.1
Host: example.com

위 요청을 실행하면 서버는 /products 경로에 해당하는 데이터를 찾아서 반환합니다. 만약 해당 경로가 존재하지 않으면 서버는 404 Not Found 상태 코드를 응답할 것입니다.

쿼리 문자열(Query String) 방식의 데이터 전송

GET 요청은 데이터를 URL의 쿼리 문자열(Query String) 형식으로 포함하여 전송할 수 있습니다.
예를 들어, 사용자가 쇼핑몰에서 '노트북'을 검색할 경우:

https://example.com/search?q=노트북

위 URL에서 q=노트북 부분이 쿼리 문자열이며, 이는 '노트북'이라는 검색어를 서버에 전달한다는 의미입니다.

쿼리 문자열의 특징

  • ? 기호 이후에 키=값 형태로 데이터를 전달합니다.
  • 여러 개의 값을 전달할 때는 & 기호로 구분합니다.
    https://example.com/products?category=electronics&sort=price_asc
    위 요청은 "전자제품 카테고리에서 가격이 낮은 순으로 정렬된 상품 목록을 요청"하는 의미를 가집니다.
  • URL 길이에 제한이 있을 수 있으므로, 대량의 데이터를 GET 요청에 포함하는 것은 권장되지 않습니다.

2. GET 메서드의 주요 특징

1) 안전성(Safety)

GET 메서드는 서버의 데이터를 변경하지 않고 조회만 수행하기 때문에 안전한 방식(Safe Method)으로 간주됩니다.

  • 예를 들어, 웹사이트에서 상품 정보를 확인하는 GET 요청은 데이터를 조회하는 것뿐이며, 상품을 추가하거나 삭제하는 작업을 수행하지 않습니다.

2) 멱등성(Idempotency)

GET 요청은 여러 번 실행해도 동일한 결과를 반환해야 합니다.

  • 예를 들어, GET /users/123 요청을 여러 번 실행한다고 해서, ID가 123인 사용자의 정보가 변경되지 않습니다.
  • 하지만 데이터베이스의 상태가 외부 요인으로 변경될 경우 응답이 달라질 수도 있습니다(예: 사용자가 삭제됨).

3) 캐싱 가능(Cachable)

GET 요청의 응답은 브라우저나 프록시 서버에서 캐싱할 수 있습니다.

  • 캐싱된 GET 요청의 응답은 재사용할 수 있기 때문에 성능 향상 및 대역폭 절약에 기여합니다.
  • 예를 들어, 웹사이트의 로고나 스타일시트 같은 정적인 리소스는 캐싱되어 불필요한 추가 요청을 줄일 수 있습니다.

캐싱 예시 (HTTP 헤더 활용)

Cache-Control: max-age=3600

위 설정은 응답을 최대 1시간(3600초) 동안 캐싱하도록 지정합니다.


3. GET 메서드의 실용적인 예제

1) 웹 페이지 로딩

웹 브라우저에서 특정 웹사이트를 방문하면, 브라우저는 자동으로 GET 요청을 실행하여 해당 페이지의 HTML 문서를 가져옵니다.
예를 들어, 사용자가 https://www.wikipedia.org를 입력하면 브라우저는 다음과 같은 GET 요청을 보냅니다.

GET / HTTP/1.1
Host: www.wikipedia.org
User-Agent: Mozilla/5.0

서버는 이에 대한 응답으로 HTML 데이터를 반환하며, 브라우저는 이를 해석하여 화면에 웹 페이지를 표시합니다.


2) RESTful API에서 데이터 조회

GET 메서드는 RESTful API에서 데이터를 가져오는 데 필수적으로 사용됩니다.
예를 들어, 특정 사용자의 정보를 조회하는 API 요청은 다음과 같이 수행됩니다.

GET /api/users/12345 HTTP/1.1
Host: api.example.com
Accept: application/json

응답 예시:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 12345,
    "name": "John Doe",
    "email": "john@example.com"
}

이처럼 GET 요청을 통해 서버에서 사용자 데이터를 안전하게 조회할 수 있습니다.


3) 검색 기능 구현

쇼핑몰이나 포털 사이트에서는 검색 기능을 제공하는데, 일반적으로 GET 요청을 사용합니다.
예를 들어, 사용자가 "스마트폰"을 검색할 경우:

GET /search?q=스마트폰 HTTP/1.1
Host: shop.example.com

이 요청을 처리한 서버는 "스마트폰" 관련 검색 결과를 JSON 혹은 HTML 형식으로 반환하게 됩니다.


4. GET 요청과 POST 요청의 차이점

GET 요청과 함께 자주 비교되는 메서드는 POST 요청입니다. GET과 POST는 각각 다른 목적을 가지고 있으므로 상황에 따라 적절히 선택해야 합니다.

구분 GET POST
목적 데이터 조회 데이터 전송 및 수정
데이터 전송 방식 URL의 쿼리 문자열 HTTP 요청 본문(Body)
보안성 낮음 (URL이 노출됨) 높음 (데이터가 본문에 포함됨)
캐싱 가능 여부 가능 불가능
멱등성 있음 (동일 요청은 같은 결과) 없음 (중복 실행 시 데이터 변경 가능)

📌 데이터를 단순 조회할 때는 GET을, 데이터를 변경하거나 전송할 때는 POST를 사용해야 합니다.


5. 결론

GET 메서드는 클라이언트가 서버에서 데이터를 요청할 때 사용되는 가장 기본적인 HTTP 메서드입니다.
안전하고 멱등성이 있어 여러 번 실행해도 같은 결과를 반환합니다.
쿼리 문자열을 사용하여 데이터를 전달하지만, 민감한 정보는 포함하지 않는 것이 좋습니다.
브라우저 및 네트워크에서 캐싱이 가능하여 성능 최적화에 도움이 됩니다.

💡 GET 메서드를 올바르게 이해하고 사용하면 보다 효율적인 웹 애플리케이션을 설계할 수 있습니다!

728x90