Request Life-Cycle
클라이언트에서 서버로 요청이 들어오고, 그 요청이 처리되어 응답으로 돌아갈 때까지의 과정
Request Lifecycle의 일반적인 흐름
1. 클라이언트 요청 (Request Initiation)
다음의 정보를 포함해서, 웹 브라우저나 클라이언트에서 HTTP 요청을 보냄.
- URL : 요청할 리소스의 경로 ex) /api/users, /products
- HTTP 메서드 : GET, POST, PUT, DELETE 등
- Headers : 요청에 대한 추가 정보 ex) 인증 토큰, Content-Type 등
- Body : 데이터 전송 시 사용(POST, PUT 요청에서 주로 사용됨).
2. 서버 수신 (Server Receives Request)
클라이언트가 요청을 보내면 서버에서 이를 수신(Listen).
서버는 특정 포트(예: HTTP의 경우 포트 80 또는 443)에서 요청을 대기, 수신된 요청은 웹 서버(Nginx, Apache)나 애플리케이션 서버(Express.js, Next.js, Django 등)로 전달
3. 라우팅 (Routing)
서버는 요청을 라우팅을 통해 적절한 핸들러로 전달. 라우터는 요청된 URL과 HTTP 메서드를 바탕으로 적절한 경로를 찾음. 이 과정에서, 서버는 어떤 함수나 컨트롤러가 요청을 처리할지 결정.
4. 미들웨어 처리 (Middleware Execution)
라우팅이 이루어지면, 해당 요청을 처리하기 전에 미들웨어가 실행. 미들웨어는 요청과 응답 객체를 변형하거나 추가 처리를 할 수 있음.
- 인증 : 요청이 인증되었는지 확인.
- 로깅 : 요청 정보를 기록(예: 시간, 경로, 클라이언트 IP).
- 요청 본문 처리: JSON 또는 URL 인코딩된 본문을 파싱.
- 미들웨어는 요청이 계속 다음 단계로 이동할 수 있도록 next() 함수를 호출.
5. 요청 처리 (Request Handling)
라우팅이 완료되고 미들웨어가 실행된 후, 요청은 최종적으로 해당 경로에 정의된 핸들러 함수에 도달. 여기서 서버는 요청의 본문, 파라미터, 쿼리 스트링 등을 기반으로 데이터를 처리.
- DB 조회 : 요청한 리소스에 맞는 데이터를 데이터베이스에서 fetching.
- 비즈니스 로직 실행
- 응답 생성 : 클라이언트에 보낼 응답을 구성(response).
6. 응답 준비 및 전송 (Response Preparation & Send)
핸들러가 요청을 처리한 후, 서버는 클라이언트에게 HTTP 응답을 보냄.
- Status Code : 응답의 상태 ex) 200 OK, 404 Not Found, 500 Internal Server Error 등
- Headers : 응답에 대한 추가 정보를 전달 ex) Content-Type, Set-Cookie
- Body : 클라이언트가 요청한 리소스나 데이터 (JSON, HTML, 파일 등).
7. 클라이언트가 응답 수신 (Client Receives Response)
클라이언트(웹 브라우저, 모바일 앱 등)는 서버로부터 받은 응답을 수신. 클라이언트는 응답의 HTTP 상태 코드와 본문을 바탕으로 요청 결과를 처리.
- 성공적인 응답 (200 OK): 클라이언트가 데이터나 페이지를 표시.
- 오류 응답 (404 Not Found, 500 Internal Server Error) : 클라이언트가 오류 메시지를 표시하거나 다른 처리 수행.
8. 요청 종료 및 서버 자원 정리 (Request Completion)
서버는 요청을 처리하고 응답을 보낸 후, 자원을 정리하고 연결을 종료하거나 다음 요청을 대기. 데이터베이스 연결이나 파일 핸들러 등의 자원을 해제하고, 필요한 경우 로그를 기록.
'web' 카테고리의 다른 글
Node.js - Node.js를 직접 만들어보자 (1) | 2025.05.07 |
---|---|
Prisma - Node.js ORM Prisma 동작 원리 (1) | 2025.05.02 |
Web Assembly - WASM, 웹 어셈블리 (1) | 2025.05.02 |
Typescript - 타입스크립트 자주 발생하는 에러 (0) | 2025.05.02 |
Next.js - caching 메커니즘 (0) | 2025.04.27 |