@RequestParam은 말 그대로 요청 파라미터를 받아올 때 사용하는 어노테이션입니다. 여러 개의 변수를 받아와야 할 때는 Map 또는 List 형식으로 받아와야 하는 것은 아니며, 컨트롤러 메서드의 인자에 각각 변수명을 지정해줘서 받아올 수 있습니다.
예를 들어, 아래와 같이 컨트롤러 메서드를 작성할 수 있습니다.
@GetMapping("/example")
public String getExample(@RequestParam("param1") String param1, @RequestParam("param2") String param2) {
// param1과 param2를 이용한 로직 처리
return "example";
}
이렇게 작성하면 요청 URL에 “param1”과 “param2”라는 파라미터가 전달될 때, 각각의 값을 String 형태로 받아와서 사용할 수 있습니다.
그러나, 변수 개수가 많아지면 @RequestParam을 일일히 다 적어주는 것이 번거로울 수 있습니다. 이럴 때는 DTO(Data Transfer Object)라는 개념을 사용하여 하나의 객체로 파라미터를 받아올 수 있습니다.
아래는
public class PostSaveController {
private final PostSaveUseCase PostSaveUseCase;
@PostMapping("/posts")
public ResponseEntity<Object> postSave(
@RequestBody @Valid PostSaveRequestDto postSaveRequestDto,
@AuthenticationPrincipal UserDetails userDetails) { //사용자 입력 정보
long userId = Long.parseLong(userDetails.getUsername());
Post savedPost = PostSaveUseCase.createPost(
postSaveRequestDto.toCommand(userId));
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(savedPost.getId())
.toUri();
return ResponseEntity.created(location).build();
}
'Spring' 카테고리의 다른 글
스프링 환경설정 셋팅 (0) | 2024.04.18 |
---|---|
URL로 파라미터를 전달하는 2가지 방법-PathVariable/RequestPar (0) | 2024.03.05 |
페치조인(Fetch Join) (0) | 2024.02.20 |
[Spring] Service, 인터페이스 사용하는 이유? (0) | 2024.01.25 |
[Spring] @Transactional에 private 접근 제한자가 불가능한 이유 (1) | 2024.01.25 |