나는 원래 return 값을 원하는 값만 송출해내게 하기 위해 Dto를 많이 활용하며 과제를 진행했었다.
이번에는 미니 프로젝트를 하며 팀원분들과 함께 프로젝트를 진행하다보니 서로의 로직성향?과 풀어나가는 방식이 다르다보니 더 효율적인 것과 깔끔한 것으로 협의해가며 진행을 하려고 하기 위해 노력했던 것같다.
그래서 이번에는 Dto를 많이 만들어서 return 값을 내보내는 것이 아닌
BasicResponseDto를 활용하여 최대한 Dto를 만들지 않고 한 Dto를 이용하여 해보는 것으로 했다!
예전에 ResponseEntity를 사용해본 적은 있어도 BasicResponseDto 는 처음이었다.
ResponseEntity는 satatusCode를 좀 더 섬세하게 다룰 수 있는 반면 BasicResponse는 data값을 이용하는 것 같았다.
@Getter
@AllArgsConstructor
public class BasicResponseDto<T> {
private boolean success;
private String message;
private T data;
public static <T> BasicResponseDto<T> setSuccess(String message, T data) {
return new BasicResponseDto<>(true, message, data);
}
public static <T> BasicResponseDto<T> setFailed(String message) {
return new BasicResponseDto<>(false, message, null);
}
}
위와 같이 기본 Dto를 만들어서 형성해주고
success : true인지 false인지
message : 상태 설명
data : 게시글 담을 리스트
<UserService>
public BasicResponseDto<?> signup(SignupRequestDto signupRequestDto) {
String userId = signupRequestDto.getUserId();
String password = passwordEncoder.encode(signupRequestDto.getPassword());
Optional<User> found = userRepository.findByUserId(signupRequestDto.getUserId());
if (found.isPresent()) {
return BasicResponseDto.setFailed("아이디 중복");
}
User user = new User(userId, password);
userRepository.save(user);
return BasicResponseDto.setSuccess("회원 가입 완료!", null);
}
이렇게 사용하였다.
'코딩 공부' 카테고리의 다른 글
swagger import 안됨 (0) | 2023.05.15 |
---|---|
미니프로젝트_트러블슈팅(답안 중복 나옴) (0) | 2023.05.07 |
미니프로젝트_트러블슈팅1(퀴즈문제내기 답null 값 안나타나게하기) (0) | 2023.05.06 |
Security 회원가입 오류 (0) | 2023.05.04 |
게시물 좋아요 삭제 오류 (1) | 2023.05.04 |