티스토리 뷰

아이디 입력 필드 옆에 아이디 중복 확인 버튼을 구현했었는데

회원가입 버튼을 누를 시 다시 한번 확인하고 resoponse 해주는 부분을 구현했습니다.

 

ResDTO

먼저 모든 API의 Response에 대해 공통으로 감싸줄 수 있는 ResDTO를 새롭게 만들어 주었습니다.

 

🧐 그렇다면 ResDTO를 만드는 이유는 무엇일까요?

Response에서 요청된 응답 값만 전달해주는게 아니라 결과에 대한 코드, 내용, 에러메세지 등을 같은 포맷으로 전달해주어 프론트에서 더 효율적으로 사용하게 하기 위한 목적입니다!

 

또한, 객체 지향적인 설계를 촉진합니다.

ResDTO 객체를 사용함으로써 응답 데이터를 하나의 객체로 추상화하고, 응답 생성 및 전달에 관련된 로직을 한 곳에서 관리할 수 있게 됩니다.

 

서버 사이드 렌더링 방식과 다른 점이라 새롭게 다가왔습니다.

package com.example.demo.dto;

import lombok.*;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ResDTO {
    private String message;
    private String code;
    private Object data;
    private Object data2;
}

 

다른 DTO들과 마찬가지로 애노테이션들을 이용해 롬복, 게터세터 등을 편하게 작성해주었고

에러 메세지를 담을 message, 결과에 대한 코드를 담을code, 결과 데이터를 담을 data, data2 4가지 속성을 갖습니다.

 

본 class 외부에서 임의로 가공하여 사용하는 일이 없도록 private으로 지정했습니다.

 

 


 

UserService.java

이제 서비스에서 두 가지 경우를 나누어 로직을 작성해줍니다.

 

1️⃣ 첫 번째는, userDTO로 들어온 아이디 (사용자가 입력한 값) 가 비어있는 경우 입니다.

	// 회원가입
	public ResDTO register(UserDTO userDTO) {
		// 1. userDTO로 들어온 아이디가 비어있을 경우
		if(userDTO.getUserId().equals("")) {
			return ResDTO.builder()
					.code("401")
					.message("비어있는 아이디")
					.data(false)
					.build();
		}

 

  • register 메서드는 UserDTO 객체를 매개변수로 받아와서 ResDTO 객체를 반환하도록 합니다.
  • UserDTO 객체의 userId 속성이 비어 있는지 확인하는 조건문(IF문)을 작성하고
  • return ResDTO.builder()
    Lombok의 @Builder 어노테이션을 이용하여 ResDTO 객체를 생성해 반혼합니다.
  • .code("401")
    생성된 ResDTO 객체의 code 속성을 "401"로 설정합니다. "401"은 HTTP 상태 코드 중 하나로, 클라이언트의 요청이 권한 없음을 나타냅니다.
  • .message("비어있는 아이디")
    생성된 ResDTO 객체의 message 속성을 "비어있는 아이디"로 설정합니다. 이 메시지는 클라이언트에게 반환될 것이며, 비어 있는 아이디가 발견되었음을 알려줍니다.
  • .data(false)
    생성된 ResDTO 객체의 data 속성을 false로 설정하여 회원가입 성공 여부를 알려줍니다.
  • .build();
    설정된 속성을 바탕으로 ResDTO 객체를 완성하여 반환합니다.

 

2️⃣ 두 번째는, userDTO로 들어온 아이디가 userEntity에 있는 아이디와 중복되는 경우 입니다.

		// 2. 아이디 중복인 경우
		// userDTO로 들어온 아이디를 userEntity에 있는 아이디와 비교
		if(userRepository.existsByUserId(userEntity.getUserId())){
	 	// true -> 중복
		return ResDTO.builder()
				.code("400")
				.message("중복된 아이디")
				.data(false)
				.build();
		}
  • if(userRepository.existsByUserId(userEntity.getUserId()))
    마찬가지로 조건문을 사용해 DB에 주어진 userId와 동일한 아이디가 이미 존재하는지 확인합니다.
  • existsByUserId 메서드는 주어진 아이디로 데이터베이스를 조회하여 존재 여부를 반환합니다.
    이 메서드는 일반적으로 Spring Data JPA나 Hibernate와 같은 ORM(Object-Relational Mapping) 프레임워크에서 사용되고, 데이터베이스에서 특정 조건을 만족하는 엔티티가 존재하는지 여부를 확인하기 위해 사용됩니다.
    반환 값은 일반적으로 불리언(boolean) 형태로 존재 여부를 나타냅니다. 만약 주어진 아이디와 일치하는 데이터가 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
  • 나머지 리턴문을 위의 방식과 동일하기 때문에 생략하겠습니다.

 

'Project 댕린이집' 카테고리의 다른 글

[회원가입] 비밀번호 확인  (0) 2024.03.06
[회원가입] 유효성 검사  (0) 2024.03.05
비밀번호 암호화  (0) 2024.03.01
mapstruct 오류 해결 : STS 에서 IntelliJ로 툴 변경  (0) 2024.02.28
mapstruct  (0) 2024.02.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함