Spring

Spring의 7가지 요청 데이터 처리 어노테이션

0and24 2024. 12. 7. 00:17

Spring Framework를 처음 접한 분들이라면 @RequestBody, @RequestParam 같은 어노테이션이 헷갈릴 수 있습니다.
이 글에서는 HTTP 요청 데이터를 처리하는 Spring의 7가지 필수 어노테이션쉽고 간단한 예제와 함께 소개합니다.

1. @RequestBody: 요청 데이터를 객체로 변환

기능

  • 클라이언트가 보낸 JSON 데이터를 Java 객체로 변환합니다.
  • 주로 POST 요청에서 데이터를 처리할 때 사용됩니다.
//UserDto

public class UserDto {
    private String email;
    private String name;
}
//Controller

@PostMapping("/user")
public String createUser(@RequestBody UserDto userDto) {
    return "이름: " + userDto.getName() + ", 이메일: " + userDto.getEmail();
}

클라이언트가 아래와 같은 JSON 데이터를 보낸다면

{
    "name": "Java",
    "email": "Java@example.com"
}

서버에서는 UserDto 객체로 자동 변환해 처리합니다.

 

2. @RequestParam: 쿼리 파라미터 처리

기능

  • URL의 쿼리 파라미터 값을 가져옵니다.
  • 간단한 key-value 데이터를 처리할 때 적합합니다.
//클라이언트 요청 예시
GET /search?keyword=Spring
// Controller
@GetMapping("/search")
public String search(@RequestParam String keyword) {
    return "검색 키워드: " + keyword;
}

서버에서는 keyword 값을 받아 검색 키워드: Spring을 반환합니다.

 

3. @ModelAttribute: 폼 데이터를 객체로 변환

기능

  • 폼 데이터를 객체로 매핑합니다.
  • 주로 HTML 폼 전송이나 간단한 key-value 쌍을 처리할 때 사용됩니다.
// 클라이언트 요청 예시
name=Spring&age=15
// Controller
@PostMapping("/form")
public String handleForm(@ModelAttribute UserForm userForm) {
    return "이름: " + userForm.getName() + ", 나이: " + userForm.getAge();
}

 

4. @PathVariable: URL 경로에서 값 추출

기능

  • RESTful URL의 경로 변수 값을 가져옵니다.
//클라이언트 요청 예시
GET /users/42
//Controller
@GetMapping("/users/{id}")
public String getUser(@PathVariable Long id) {
    return "사용자 ID: " + id;
}

클라이언트가 위와 같은 요청을 보냈다면 서버에서는 id 값 42를 추출해 사용자 ID: 42를 반환합니다.

5. @RequestHeader: HTTP 헤더 값 가져오기

기능

  • HTTP 요청의 헤더 값을 가져옵니다.
User-Agent: Mozilla/5.0
//Controller
@GetMapping("/user-agent")
public String getUserAgent(@RequestHeader("User-Agent") String userAgent) {
    return "User-Agent: " + userAgent;
}

클라이언트의 요청에 헤더가 포함되어 있다면 서버에서는 이를 받아 출력합니다

 

6. @CookieValue: 쿠키 값 가져오기

기능

  • HTTP 요청에 포함된 쿠키 값을 가져옵니다.
SESSIONID=abc123
@GetMapping("/session")
public String getSessionId(@CookieValue("SESSIONID") String sessionId) {
    return "Session ID: " + sessionId;
}

클라이언트가 위와 같은 쿠키를 보냈다면 서버에서는 abc123을 추출해 Session ID: abc123을 반환합니다.

7. @RequestPart: 멀티파트 데이터 처리

기능

  • HTTP 요청에서 멀티파트 데이터를 처리합니다.
  • 파일 업로드와 같은 작업에서 자주 사용됩니다.
@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
    return "업로드된 파일 이름: " + file.getOriginalFilename();
}

클라이언트가 파일을 업로드하면, 서버는 해당 파일을 file이라는 MultipartFile 타입의 변수로 사용하게 해줍니다,.