1. @RequestParam
- 역할: URL 쿼리 파라미터에서 값을 추출합니다.
- 주로 사용되는 경우: GET 요청에서 URL 뒤에 붙은 쿼리 스트링(?key=value)에서 값을 받아올 때.
@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword) {
return "Search result for: " + keyword;
}
- GET /search?keyword=spring 요청 시, keyword 값은 "spring"으로 바인딩.
2. @PathVariable
- 역할: URL 경로에 포함된 변수를 메소드 파라미터로 매핑
- 주로 사용되는 경우: RESTful API에서 리소스 식별자(ID 등)를 경로에 포함시켜 동적으로 값을 받을 때.
@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") Long id) {
return "User ID: " + id;
}
- GET /users/123 요청 시, id 값은 123으로 바인딩.
3. @RequestBody
- 역할: **HTTP 요청 본문(body)**에서 JSON, XML 등의 데이터를 객체로 매핑
- 주로 사용되는 경우: POST, PUT, PATCH 요청에서 클라이언트가 보낸 JSON 형식의 데이터를 받을 때.
@PostMapping("/users")
public ResponseEntity<Void> createUser(@RequestBody UserDTO userDTO) {
userService.createUser(userDTO);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
- 클라이언트가 요청 본문에 JSON으로 사용자의 정보를 보내면, 이를 UserDTO로 변환해 처리.
4. @ModelAttribute
- 역할: 폼 데이터나 URL 쿼리 파라미터를 객체로 바인딩
- 주로 사용되는 경우: GET 또는 POST 요청에서 폼 데이터나 쿼리 파라미터를 객체에 자동 바인딩할 때.
@PostMapping("/form")
public String submitForm(@ModelAttribute UserDTO userDTO) {
return "Form submitted by: " + userDTO.getName();
}
- 주로 HTML 폼 데이터를 객체로 받아서 처리하는 경우에 사용.
5. @RequestPart
- 역할: Multipart/form-data 요청에서 파일과 JSON 또는 문자열 데이터를 함께 받아 처리
- 주로 사용되는 경우: 파일 업로드와 함께 추가적인 데이터를 받아야 할 때.
@PostMapping("/upload")
public ResponseEntity<Void> uploadFile(
@RequestPart("file") MultipartFile file,
@RequestPart("description") String description) {
fileService.save(file, description);
return ResponseEntity.ok().build();
}
- 파일과 함께 설명이나 다른 문자열 데이터를 동시에 받는 경우.
6. @RequestHeader
- 역할: HTTP 요청 헤더에서 값을 추출해 메소드 파라미터로 전달
- 주로 사용되는 경우: 인증 토큰, 사용자 에이전트 등의 HTTP 헤더 값을 가져올 때.
@GetMapping("/auth")
public String getAuthToken(@RequestHeader("Authorization") String authToken) {
return "Token: " + authToken;
}
- 요청 헤더에서 Authorization 값(예: 토큰)을 추출하여 사용.
7. @AuthenticationPrincipal
- 역할: 현재 로그인된 사용자 정보를 가져오는 데 사용
- 주로 사용되는 경우: 인증된 사용자의 정보를 컨트롤러에서 처리해야 할 때.
@GetMapping("/profile")
public String getUserProfile(@AuthenticationPrincipal User user) {
return "Profile of: " + user.getUsername();
}
- 현재 인증된 사용자 정보를 User 객체로 받아와 사용.
※ 커스텀 어노테이션으로 커스텀해서 인증된 사용자 정보 주입 + 로깅 or 기타 로직 등 추가 가능
- @RequestParam: URL 쿼리 파라미터 추출.
- @PathVariable: URL 경로 변수 추출.
- @RequestBody: 요청 본문(body)에서 JSON 등을 객체로 변환.
- @ModelAttribute: 폼 데이터 또는 쿼리 파라미터를 객체로 바인딩.
- @RequestPart: 파일과 JSON, 문자열 데이터를 함께 처리.
- @RequestHeader: HTTP 요청 헤더에서 값 추출.
- @AuthenticationPrincipal: 현재 로그인된 사용자 정보 주입.
'Spring Boot' 카테고리의 다른 글
JSON_ARRAYAGG & @JsonRawValue (1) | 2024.09.24 |
---|---|
AOP를 활용한 브라우저 캐시_4 정적 리소스 캐싱 명시 (0) | 2024.09.11 |
AOP를 활용한 브라우저 캐시_3_AOP / @GetMapping (2) | 2024.09.10 |
AOP를 활용한 브라우저 캐시_1_전략 전택 (1) | 2024.09.10 |
AOP를 활용한 브라우저 캐시_2_ETag & 인터셉터 (실패) (0) | 2024.09.10 |