728x90

서버 응답: "status":"BAD_REQUEST"

서버에 클라이언트로부터 전송된 데이터를 처리하는 과정에서 발생했습니다.

에러 메세지를 보면 Failed to convert value of type.......entity.ClubCategory와 같이 데이터 변환에 문제가 있는 것을 알 수 있습니다.

서버에서 Enum으로 카테고리의 종류를 SPORTS, ALL, TODAY, STUDY..등으로 영어로 받고 있어서 데이터를 전송할때도 똑같이 영어로 전송해야 하는데 한글로 전송해서 발생되는 문제 였습니다.

 

서버에서 클라이언트로부터 전송된 데이터를 처리하는 과정에서 발생한 문제를 해결하기 위해 Enum클래스를 수정하였습니다.

public enum ClubCategory {
    ALL,
    SPORTS,
    TODAY,
    GAME,
    FOOD,
    STUDY,
    ETC;
}

//////////////////////////////////////// 아래처럼 수정//////////////////////////////////////////
public enum ClubCategory {
    ALL("전체"),
    SPORTS("운동"),
    TODAY("일상"),
    GAME("게임"),
    FOOD("음식"),
    STUDY("스터디"),
    ETC("기타");

    private final String KrName;

    ClubCategory(String KrName) {
        this.KrName = KrName;
    }
    public String getKrName() {
        return KrName;
    }
}

 

기존에는 영어로만 값을 받아들이던 Enum이 한글로 전송되어 발생하는 데이터 변환 오류를 해결하기 위해 Enum에 한글 이름인 (KrName)을 추가하고, 이를 활용하여 RquestDto와 ResponseDto에서 한글 카테고리명을 사용하도록 변경해 해결 하였습니다.

@Builder
public record ClubResponseDto(
        Long clubId,
        String clubTitle,
        String content,
        ClubCategory category,
        String categoryKrName,
        String imageURL,
        String username,
        LocalDateTime startTime,
        LocalDateTime endTime,
        LocalDateTime createdAt,
        LocalDateTime modifiedAt
) {
    public static ClubResponseDto createClubResponseDto(
            Club club
    ) {

        return ClubResponseDto.builder()
                .clubId(club.getId())
                .clubTitle(club.getClubTitle())
                .content(club.getContent())
                .category(club.getCategory())
                .categoryKrName(club.getCategory().getKrName())
                .imageURL(club.getImageUrl())
                .username(club.getUsername())
                .startTime(club.getStartTime())
                .endTime(club.getEndTime())
                .createdAt(club.getCreatedAt())
                .modifiedAt(club.getModifiedAt())
                .build();
    }
}
//////////////////////////////////////////////////////////////////////////////////////////
@Builder

public record ClubRequestDto(
        String clubTitle,
        String content,
        ClubCategory category,
        String categoryKrName,
        MultipartFile imageFile,
        LocalDateTime startTime,
        LocalDateTime endTime
) {

}

 

728x90

'알쓸I잡(알면 쓸모있는 IT 잡학사전)' 카테고리의 다른 글

Intellij IDEA 로컬기록  (0) 2024.02.09
net::ERR_ABORTED 404  (0) 2024.01.17
Servlet.service() for servlet Error  (0) 2024.01.14