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 타입의 변수로 사용하게 해줍니다,.
'Spring' 카테고리의 다른 글
@Transactional(readOnly = true)란? (4) | 2024.12.13 |
---|---|
JPA (Java Persistence API)란? (0) | 2024.12.10 |
Spring Boot에서 H2 Console 'localhost에서 연결을 거부했습니다' 에러 해결 (1) | 2024.12.06 |
[Spring] Optional의 활용: Repository, Service, 그리고 ResponseEntity의 역할 (0) | 2024.12.06 |
객체 동등성 비교를 간단하게: @EqualsAndHashCode (1) | 2024.12.04 |