request와 session

허성재's avatar
Aug 21, 2024
request와 session

1. Request (요청)

Request는 클라이언트가 웹 서버에 보내는 HTTP 요청을 의미합니다. 사용자가 웹 애플리케이션의 특정 자원(페이지, API 엔드포인트 등)에 접근하려고 할 때 서버에 요청을 보내는 과정입니다. 이 요청은 서버에서 클라이언트에게 응답을 생성하고 반환하는 데 필요한 정보를 제공합니다.

주요 특징

  1. HTTP 메서드: 요청은 HTTP 메서드를 사용하여 특정 작업을 지시합니다. 주요 HTTP 메서드에는 GET, POST, PUT, DELETE, PATCH 등이 있습니다.
      • GET: 서버에서 정보를 가져옵니다. URL을 통해 데이터를 조회합니다.
      • POST: 서버에 데이터를 전송합니다. 주로 폼 제출이나 API 호출 시 사용됩니다.
      • PUT: 서버의 리소스를 업데이트합니다.
      • DELETE: 서버의 리소스를 삭제합니다.
      • PATCH: 서버의 리소스를 부분적으로 업데이트합니다.
  1. 헤더(Header): 요청에는 메타데이터를 포함하는 HTTP 헤더가 포함됩니다. 헤더는 요청의 처리에 필요한 추가 정보를 제공합니다(예: Content-Type, User-Agent, Authorization 등).
  1. 파라미터와 본문:
      • 쿼리 파라미터: URL에 포함된 파라미터로, ?key=value 형식으로 전달됩니다. 주로 GET 요청에서 사용됩니다.
      • 본문(Body): 주로 POST, PUT, PATCH 요청에서 사용되며, 요청의 본문에 데이터를 포함합니다(예: 폼 데이터, JSON, XML).
  1. Request 객체: 웹 프레임워크(예: Spring, Express.js 등)에서는 클라이언트의 요청을 처리하기 위해 Request 객체를 사용합니다. 이 객체는 요청의 세부 정보를 캡슐화하여 제공하며, 컨트롤러나 핸들러에서 이 객체를 사용하여 요청을 처리합니다.

예시

GET /profile?userId=123 HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0
위 요청은 /profile 경로로 userId=123 파라미터를 포함하여 GET 요청을 보내고 있습니다.

2. Session (세션)

Session은 클라이언트와 서버 간의 상태를 유지하기 위한 방법으로, 사용자의 상태 정보를 서버 측에 저장하고, 여러 요청에 걸쳐 사용자 정보를 관리합니다. 웹 애플리케이션은 HTTP 프로토콜의 상태 비저장 특성으로 인해 세션을 사용하여 사용자 상태를 유지합니다.

주요 특징

  1. 세션 ID: 서버는 클라이언트를 식별하기 위해 세션 ID를 생성합니다. 이 ID는 클라이언트와 서버 간의 상태를 추적하는 데 사용됩니다. 일반적으로 쿠키를 통해 클라이언트와 서버 간에 세션 ID를 전달합니다.
  1. 서버 측 저장: 세션 데이터는 서버 측에 저장됩니다. 이는 사용자의 인증 정보, 장바구니 내용, 사용자 설정 등 클라이언트의 상태와 관련된 데이터를 포함합니다.
  1. 세션 만료: 세션은 일정 시간 동안 비활성 상태가 지속되면 만료됩니다. 또한 사용자가 로그아웃하거나 세션을 명시적으로 종료할 수도 있습니다. 세션 만료는 서버의 자원 관리를 위한 중요한 기능입니다.
  1. 세션 관리: 세션을 통해 사용자는 로그인 상태를 유지하고, 여러 페이지 요청 간에 사용자 정보를 공유할 수 있습니다. 웹 프레임워크는 세션을 관리하는 다양한 도구와 API를 제공합니다.

예시

웹 애플리케이션에서 세션을 사용하여 사용자의 로그인 상태를 관리하는 예시:
// 로그인 시 세션 생성 HttpSession session = request.getSession(); session.setAttribute("user", loggedInUser); // 다른 요청에서 세션 정보를 사용 User user = (User) session.getAttribute("user"); if (user != null) { // 사용자 정보 사용 }
이 예시에서는 사용자가 로그인하면 세션에 사용자 정보를 저장하고, 이후 요청에서 세션을 통해 로그인 상태를 확인합니다.

요약

  • Request: 클라이언트가 서버에 보내는 HTTP 요청으로, 요청의 메서드, 헤더, 파라미터, 본문 등을 포함합니다. 서버는 이 요청을 처리하여 적절한 응답을 생성합니다.
  • Session: 서버와 클라이언트 간의 상태를 유지하기 위한 메커니즘으로, 서버 측에 상태 정보를 저장하고 세션 ID를 통해 상태를 추적합니다. 이는 사용자의 로그인 상태 유지, 데이터 저장 등을 지원합니다.
두 개념 모두 웹 애플리케이션의 사용자 경험을 향상시키고, 상태 관리 및 데이터 처리에 중요한 역할을 합니다.
Share article

heo-gom