HttpServletRequest 와 WebRequest 의 차이점

Daniel·2024년 4월 8일
0

Back-End

목록 보기
37/42

들어가며

코딩을 하다보면 요청객체를 HttpSevletRequest 또는 WebRequest 로 받아 활용하고 있는데
과연 위 두 객체의 차이점 및 특징은 뭔지 알아보려 합니다.

이 포스트에서는 HttpSevletRequestWebRequest 에 대한 설명 및 차이점에 대해 작성해 보려 합니다.

HttpServletRequest

서블릿 기반 애플리케이션에서 HTTP 요청을 처리하는 방법을 제공합니다.
클라이언트가가 서버에 요청을 보내면 서블릿 컨테이너는 이 요청을 HttpServletRequest 객체로 래핑하고 이를 서블릿의 서비스 메서드에 전달합니다.

특징

  • 요청 매개변수에 대한 접근을 제공합니다.
  • 헤더 조작 및 접근 방법을 제공합니다.
  • getSession() 메서드를 통한 세션관리가 가능합니다.
  • InputStream 을 통해 요청 본문을 직접 읽을 수 있습니다.

WebRequest

Spring 기반 애플리케이션에서 다양한 유형의 요청(Ex. HTTP, 원격호출)에 걸쳐 요청속성과 상호작용하는 방법을 제공합니다.
SpringMVC 또는 Spring WebFlux 핸들러 내에서 활용되며 Servlet API에 직접 의존하지 않고 요청에 접근하는 일반화된 방법을 제공합니다.

특징

  • 요청 속성 액세스를 위한 통합 인터페이스로 Spring 애플리케이션 컨텍스트에서 작업하기가 더 쉬워졌습니다.
  • HttpServletRequest와 같은 요청 본문 읽기를 직접 허용하지 않지만 @RequestBody 및 요청 데이터를 메소드 매개변수에 바인딩하는 기타 주석과 함께 작동합니다.

비교 및 차이점

HttpServletRequest

  • 저수준 추상화 : HTTP 프로토콜에 직접 연결된 낮은 수준의 API를 제공하므로 요청 처리에 대한 세부적인 제어가 필요한 애플리케이션에 적합합니다.
  • 서블릿 API 통합 : Java Servlet API 및 서블릿 컨테이너 내에서 작업할 때 사용합니다.
  • 직접적인 조작 : 서블릿 기반 모델의 헤더, 쿠키 또는 세션 데이터에 액세스하는 등 HTTP 요청 및 응답을 직접 조작할 수 있습니다.

WebRequest

  • 고수준 추상화 : HttpServletRequest 보다 더 높은 수준의 추상화를 제공하므로 데이터 바인팅, 유효성 겁사 등과 같은 Spring의 광범위한 기능을 활용할 수 있는 Spring Framework로 개발된 애플리케이션에 적합합니다.
  • Spring Framework 호환성 : WebRequest는 Spring의 웹 애플리케이션 기능을 활용하는 Spring MVC 컨트롤러 내의 인터페이스입니다.
  • 통합 접근 방식 : Spring의 웹 MVC 기능을 활용하는 Spring 애플리케이션의 경우 편리하고 통합된 접근 방식을 제공합니다.

결론

포스트를 작성하며 자료를 찾다보니 위 두 객체에 대해 조금 더 구분할 수 있게 되었습니다.
앞으로는 애플리케이션의 특정 요구 사항과 원하는 방식을 고려해 사용할 수 있을 것 같습니다.

profile
응애 나 애기 개발자

0개의 댓글