본문으로 건너뛰기
실습하기

HTTP 요청 및 응답

웹에서 웹 브라우저(클라이언트)와 웹 서버 간의 데이터를 교환할 때 HTTP(HyperText Transfer Protocol)라는 프로토콜(통신 규약)을 사용합니다.

웹 브라우저가 웹 서버에 데이터를 요청(Request)하면, 웹 서버는 요청에 대한 응답(Response)을 반환합니다.


HTTP 요청(Request)

HTTP 요청은 웹 브라우저가 웹 서버에게 보내는 메시지를 뜻합니다.

예를 들어 특정 웹 페이지를 열람하거나 사용자가 입력한 데이터를 웹 서버에 전송하는 경우, 웹 브라우저는 해당 웹 서버에 HTTP 요청을 보냅니다.

가장 기본적인 요청 유형은 다음과 같습니다.

  • GET: 서버로부터 데이터를 요청합니다. 예를 들어, 웹 페이지나 이미지를 불러올 때 사용합니다.

  • POST: 서버로 데이터를 전송하여 해당 데이터를 기반으로 요청된 자원을 처리하도록 합니다. 예를 들어, 웹 폼을 제출할 때 사용합니다.

요청은 주소(URL), 요청 방식(GET, POST 등), 헤더(예: 요청에 대한 메타데이터와 쿠키 등), 그리고 요청 본문(POST 요청 시 전송되는 데이터)을 포함할 수 있습니다.

requests 라이브러리를 사용 예시
# requests 라이브러리를 사용하여 HTTP 요청 보내기
import requests

url = 'http://example.com' # 요청할 웹 페이지의 URL
response = requests.get(url) # GET 요청을 보냄

print(response.text) # 웹 페이지의 HTML 내용 출력

HTTP 응답(Response)

HTTP 응답은 웹 서버가 클라이언트의 요청에 대해 보내는 메시지입니다.

이 응답은 요청이 성공/실패를 나타내는 상태 코드, 서버 정보, 서버로부터 반환된 데이터 등을 포함합니다.

상태 코드 예시는 다음과 같습니다,

  • 200 OK: 요청이 성공적으로 처리됐음을 나타냅니다.

  • 404 Not Found: 요청한 리소스를 찾을 수 없음을 나타냅니다.

  • 500 Internal Server Error: 서버 내부 오류가 발생함을 나타냅니다.

응답 역시 헤더와 본문을 포함할 수 있습니다.

헤더는 응답에 대한 메타데이터(예를 들어 콘텐츠 유형)를 제공하고, 본문은 실제로 반환되는 데이터(HTML 문서, 이미지 등)를 담고 있습니다.

requests 라이브러리를 사용 예시
# requests 라이브러리로 HTTP 응답 받기
import requests

url = 'http://example.com'
response = requests.get(url)

print(response.status_code) # 상태 코드 출력
print(response.headers) # 응답 헤더 출력
print(response.text) # 응답 본문 출력

웹 페이지를 불러오는 과정

  1. 요청: 사용자가 웹 브라우저의 주소창에 URL을 입력하고 엔터를 누르면, 브라우저는 해당 URL의 웹 서버에 HTTP 요청을 보냅니다.

  2. 처리: 웹 서버는 이 요청을 받아 처리한 후, 요청된 데이터 및 웹 페이지를 HTTP 응답으로 클라이언트에 반환합니다.

  3. 응답: 브라우저는 응답 결과를 파싱하여 웹 페이지의 내용을 화면에 렌더링합니다.


실습

화면 오른쪽 코드 실행 버튼을 누르고, 크롤링 결과를 확인하거나 코드를 수정해 보세요!

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!