웹의 요청(Request)과 응답(Response)은 클라이언트(예: 브라우저)와 서버 간의 데이터를 주고받는 기본적인 메커니즘입니다. 이 과정을 통해 웹 애플리케이션은 데이터를 교환하고 사용자에게 콘텐츠를 제공합니다.
1. 요청(Request)
개념
- 클라이언트가 서버에 무언가를 요청하는 행위입니다.
- 브라우저, 모바일 앱, API 클라이언트 등에서 생성됩니다.
구성 요소
-
요청 메서드 (HTTP Method):
- 서버에서 수행하려는 작업을 정의합니다.
- 주요 메서드:
- GET: 데이터를 조회합니다.
- POST: 데이터를 생성하거나 서버에 전송합니다.
- PUT: 데이터를 업데이트합니다.
- DELETE: 데이터를 삭제합니다.
-
URL:
- 서버 리소스의 위치를 나타냅니다. (예:
https://example.com/users
)
-
HTTP 헤더:
- 요청에 대한 추가 정보를 담습니다.
- 예:
Content-Type
, Authorization
-
쿼리 파라미터:
- URL에 포함된 키-값 쌍으로 데이터를 전달합니다.
- 예:
/search?query=apple&sort=asc
-
본문(Body):
- 주로 POST나 PUT 요청에서 데이터를 전송할 때 사용합니다.
- 형식: JSON, XML, Form Data 등.
2. 응답(Response)
개념
- 서버가 클라이언트의 요청에 대한 결과를 반환하는 행위입니다.
구성 요소
-
상태 코드 (HTTP Status Code):
- 요청 처리 결과를 숫자로 나타냅니다.
- 주요 상태 코드:
- 200: 요청 성공
- 201: 리소스 생성 성공
- 400: 잘못된 요청 (클라이언트 오류)
- 401: 인증 실패
- 404: 리소스를 찾을 수 없음
- 500: 서버 내부 오류
-
HTTP 헤더:
- 응답에 대한 메타데이터를 포함합니다.
- 예:
Content-Type
, Cache-Control
-
본문(Body):
- 응답 데이터가 포함됩니다.
- HTML, JSON, XML 등 다양한 형식으로 제공됩니다.
3. 요청과 응답 과정
단계별 과정
-
클라이언트 요청 생성:
- 사용자가 브라우저에서 URL을 입력하거나 버튼을 클릭하면 요청이 생성됩니다.
-
DNS 조회:
- 도메인 이름(예:
example.com
)을 IP 주소로 변환하여 서버 위치를 확인합니다.
-
TCP/IP 연결:
- 클라이언트와 서버 간에 TCP 연결을 생성합니다.
-
HTTP 요청 전송:
- 클라이언트가 요청 메서드, URL, 헤더, 본문을 포함한 HTTP 요청을 서버로 보냅니다.
-
서버 처리:
- 서버는 요청을 받아 해당 작업(데이터 조회, 생성, 업데이트 등)을 수행합니다.
-
응답 생성:
- 요청 처리 결과를 상태 코드, 헤더, 본문과 함께 HTTP 응답으로 생성합니다.
-
클라이언트 응답 수신:
- 브라우저가 응답을 받아 사용자에게 결과를 렌더링합니다.
-
TCP 연결 종료:
4. 요청과 응답의 주요 예시
GET 요청
GET /api/products HTTP/1.1
Host: example.com
Accept: application/json
응답:
HTTP/1.1 200 OK
Content-Type: application/json
[
{ "id": 1, "name": "Laptop", "price": 1000 },
{ "id": 2, "name": "Mouse", "price": 50 }
]
POST 요청
POST /api/products HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "Keyboard",
"price": 120
}
응답:
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 3,
"name": "Keyboard",
"price": 120
}
5. 클라이언트와 서버 간 통신의 흐름
- 클라이언트 이벤트 발생: 사용자 요청 → 브라우저에서 HTTP 요청 전송
- 네트워크 통신: 클라이언트와 서버 간 데이터 전송
- 서버 처리: 요청에 따라 데이터베이스 작업, 비즈니스 로직 실행
- 응답 반환: 처리 결과를 클라이언트에 반환
- 결과 렌더링: 응답 데이터를 바탕으로 사용자 화면 업데이트
이 과정을 통해 웹 애플리케이션은 데이터를 동적으로 처리하며 사용자와 상호작용합니다.
추가 학습 자료