프로젝트 기술
Kotlin
, Java(jdk21)
, Spring Boot(3.2.5)
, Spring Security(6.2.4)
, Firebase
, miniO
개요
사이드 프로젝트에서 Google 로그인 사용자의 서비스 회원가입을 구현했습니다.
코드리뷰를 거쳐 수정된 내용을 소개합니다.
STEP 1. Refactoring
리팩토링되기전 코드는 [project_feature](kts, java) Firebase와 miniO를 활용한 Google로그인 사용자 회원가입 진행하기에서 확인이 가능합니다.
STEP 1-1 @ModelAttribute => @RequsetPart 변경
- AuthController.java
@PostMapping(value = "/sign-up", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity signUp(@AuthenticationPrincipal Jwt jwt,
@RequestPart SignUpRequestDto signUpRequestDto,
@RequestPart(required = false) MultipartFile profileImage) {
User user = authService.registerUser(jwt.getSubject(), signUpRequestDto, profileImage);
return new ResponseEntity( userMapper.toSignUpResponseDto(user), HttpStatus.CREATED);
}
AuthController의 signUp부분만 발췌했습니다. 가장 두드러지는 핵심 변경 사항으로는 요청받는 데이터를 처리하기 위해 사용되었던 @ModelAttribute
에서 @RequestPart
로 변경되었다는 점입니다.
HTTP 요청 header인 Content-Type이 multipart/form-data 요청에서 각각의 동작은 아래와 같습니다.@ModelAttribute
는 이미지를 포함하여 클라이언트에서 form태그에서 요청하는 데이터들을 하나의 자바 객체로 바인딩 할 때 사용할 수 있다고 이해할 수 있습니다. 하지만 @RequestPart
를 사용하면 클러이언트에서 요청하는 form태그의 데이터 내용을 각각 필요한 객체로 바인딩하여 받을 수 있는 특징이 있습니다.
당연한 이야기지만 자주 사용하는 @RequestBody
로 받는 경우는 HTTP 요청 header인 Content-Type이 application/json이어야합니다.
'side project > 여행 서비스 플랫폼 (24.05~)' 카테고리의 다른 글
[project_feature](kts, java) Firebase와 miniO를 활용한 Google로그인 사용자 회원가입 진행하기 (0) | 2024.06.15 |
---|