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 등 다양한 방법을 제공합니다. 요청 데이터를 받는 방식은 요청의 종류와 처리할 데이터의 형태에 따라 결정됩니다.

반응형