Backend/Spring(이론)
스프링 - Controller에서 요청 데이터 받기
재성스
2024. 3. 9. 21:45
반응형
Spring Boot에서 Controller에서 요청 데이터를 받는 방법은 여러 가지가 있습니다. 아래는 주요 방법들과 예시 코드를 소개합니다.
1. @RequestParam
- 쿼리 파라미터나 폼 데이터 받기
@RequestParam
은 주로 GET 요청의 쿼리 파라미터나 POST 요청의 폼 데이터를 처리할 때 사용됩니다.
@GetMapping("/greeting")
public String greeting(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
2. @PathVariable
- URI 템플릿 변수 받기
@PathVariable
은 URL 경로의 일부를 메서드의 파라미터로 받을 때 사용됩니다.
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {
return userService.findById(id);
}
3. @RequestBody
- 요청 본문 받기
@RequestBody
는 주로 POST 또는 PUT 요청의 JSON이나 XML 같은 요청 본문(body)을 Java 객체로 받을 때 사용됩니다.
@PostMapping("/users")
public User createUser(@RequestBody User newUser) {
return userService.save(newUser);
}
4. @RequestHeader
- HTTP 헤더 받기
@RequestHeader
를 사용하여 특정 HTTP 헤더의 값을 메서드 파라미터로 받을 수 있습니다.
@GetMapping("/header")
public String headerValue(@RequestHeader("User-Agent") String userAgent) {
return "The User-Agent is: " + userAgent;
}
5. @CookieValue
- 쿠키 값 받기
@CookieValue
를 사용하여 요청에 포함된 쿠키 값을 메서드 파라미터로 받을 수 있습니다.
@GetMapping("/cookie")
public String getCookieValue(@CookieValue(name = "username", defaultValue = "guest") String username) {
return "Hello, " + username;
}
6. @ModelAttribute
- 폼 데이터를 객체로 받기
@ModelAttribute
는 폼 데이터를 객체로 매핑할 때 사용됩니다. 주로 POST 요청에서 사용됩니다.
@PostMapping("/register")
public String registerUser(@ModelAttribute User user, Model model) {
// 사용자 등록 로직
model.addAttribute("user", user);
return "userProfile";
}
7. HttpServletResponse
- 직접 응답하기
직접 HttpServletResponse
를 사용하여 응답을 컨트롤 할 수도 있습니다.
@GetMapping("/download")
public void downloadFile(HttpServletResponse response) {
// 파일 다운로드 로직
response.setHeader("Content-Disposition", "attachment; filename=\"filename.txt\"");
// 파일 쓰기 로직
}
이 외에도 Spring MVC에서는 폼 데이터를 처리하기 위한 WebDataBinder
, 파일 업로드를 처리하기 위한 @RequestPart
등 다양한 방법을 제공합니다. 요청 데이터를 받는 방식은 요청의 종류와 처리할 데이터의 형태에 따라 결정됩니다.
반응형