-
(문제해결) 5 - [Required request body is missing: public org.springframework.web.context.request.async.DeferredResult<org.springframework.http.ResponseEntity<?>> com.spoany.bims.api.program.web.TrainingSessionController.getMemberList(com.spoany.bims.api.share개발/문제해결 2025. 2. 23. 13:00
프로젝트 진행 중 Required request body is missing 오류가 떴다.
@RequestBody 어노테이션도 붙였는데 오류가 나서 무슨 문제인가 확인해보니,
Swagger 에서 GetMapping 인 경우 @RequestBody 처리를 하지 못해서 그런 것이였다.
기본적으로 GET 요청은 본문을 포함하지 않는 것이 일반적이고,
@RequestBody는 본문을 읽어오는 방식이기 때문에,
GET 요청에서 본문을 처리하려고 할 때 문제가 발생한다.
@Operation(summary = "PT 회원 목록 조회", description = "PT 회원 목록 조회") @GetMapping("/training-session/pt/memberList") public DeferredResult<ResponseEntity<?>> getMemberList( @AuthenticationPrincipal AuthUser user, @ModelAttribute @Valid MemberListRequestDto memberListRequestDto) { return successResponse(trainingSessionService.getPtMemberList(memberListRequestDto)); }
@PostMapping 을 사용해 @RequestBody 어노테이션을 사용하는 방법도 있지만,
조회의 경우에는 @GetMapping 을 사용하는 것이 일반적이므로 @ModelAttribute 활용한다.
@ModelAttribute 어노테이션은 다음과 같은 역할을 한다.
- branchCode, chargeStaffId, type 을 자동으로 MemberListRequestDto 객체로 바인딩함.
- URL에서 쿼리 파라미터를 DTO의 필드에 자동 매핑해줌.
즉, GET 요청에서 URL의 파라미터 값을 DTO로 받을 수 있으며,
DTO에 @Valid 적용도 가능하다. (필드 유효성 검사)
더불어 @RequestParam보다 객체로 관리할 수 있어 유지보수성이 높아진다.
'개발 > 문제해결' 카테고리의 다른 글
(문제해결) 4 - Windows 추천으로 뜬 현재 이미지 배경 화면 설정하기 (1) 2024.11.06 (문제해결) 3 - gitbash vscode 자동 연결 해제하기 (2) 2024.10.16 (문제해결) 2 - 홈페이지 상단 메뉴 가운데 정렬 처리하기 (0) 2023.07.05 (문제해결) 1 - 자바 java error could not open ~ cfg 오류 (0) 2023.06.04