<aside> 🗒️ 우리의 개발 시 컨트롤러 작성법

</aside>

23-03-09(목), 이상민

예전 방식

@PostMapping("/login")
  private ResponseEntity<Map<String, Object>> login(
          @RequestBody UserLoginRequestDto userLoginRequestDto) {

      Map<String, Object> resultMap = new HashMap<>();
      HttpStatus status = HttpStatus.OK;

      TokenResponseDto tokenResponseDto = null;
      UserLoginResponseDto userLoginResponseDto = null;

      try {
          tokenResponseDto = userService.login(userLoginRequestDto);
          userLoginResponseDto = userService.getLoginUser(userLoginRequestDto.getId());
          resultMap.put("token", tokenResponseDto);
          resultMap.put("user", userLoginResponseDto);
      } catch (Exception e) {
          resultMap.put("error", e.getMessage());
          status = HttpStatus.INTERNAL_SERVER_ERROR;
      }

      return new ResponseEntity<Map<String, Object>>(resultMap, status);
  }

새로운 방식

@RestController
@RequestMapping("profile")
@RequiredArgsConstructor
public class ProfileController {

    private static final Logger logger = LoggerFactory.getLogger(ProfileController.class);

    private final ProfileService profileService;

    @GetMapping("{email}/info")
    private ResponseEntity<Map<String, Object>> userInfo(
                                    @AuthenticationPrincipal User user,
                                    @PathVariable String email) throws Exception{

        logger.info("[userInfo] request : email={}", email);

        Map<String, Object> resultMap = new HashMap<>();
        boolean isMe = false;
        UserInfoResponse userInfoResponse = null;

        if(email.equals(user.getUsername())) {
            isMe = true;
            userInfoResponse = profileService.getUserInfo(email);
        }
        
        resultMap.put("isMe", isMe);
        resultMap.put("userInfo", userInfoResponse);
        
        logger.info("[userInfo] response : isMe={}, userInfo={}", isMe, userInfoResponse);

        return new ResponseEntity<Map<String, Object>>(resultMap, HttpStatus.OK);
    }
}