2022.12.04 TIL

SUADI·2022년 12월 4일
0

오늘의 커밋

  • 게시물 수정 시, 이미지 수정을 하지 않더라도 기존 이미지 유지

[1] 이미지 NullPointerException

프로필, 게시물 등을 수정할 때 이미지를 변경하지 않은 경우, 즉, 이미지가 null값인 경우 기존 이미지를 유지하고 싶었는데 계속 nullPointerException이 발생했었다. 이 문제를 해결하기 위해서 코드를 이렇게 수정했다.

String profileImage = (companyUpdateRequest.getProfileImage() == null) ?
        member.getProfileImage() : s3Uploader.uploadFiles(companyUpdateRequest.getProfileImage(), "company");

이미지가 null이 들어올 경우 profileImage 문자열에 기존 이미지의 이미지 url을 저장하고, null이 아닌 경우, 이미지 파일을 버켓에 올려 저장한 후의 url을 저장하도록 했다.

이 방식으로 하게 되면 포스트맨으로는 잘 작동하는데 프런트 단에서 직접 요청을 할 경우에 자꾸 400 에러가 발생했다.

400에러는 BAD REQUEST 에러로서 잘못된 요청을 보내는 경우에 발생한다. 이 에러를 며칠동안 해결하지 못하고 있었는데 결국 백엔드 팀원분들과 모두 모여서 라이브 코딩을 하면서 결국 해결해 냈다.

백엔드 분들과 합심한 결과 포스트맨으로 요청할 때 file 형식으로 이미지를 요청하면 정상적으로 작동하는데 text 형식으로 이미지를 요청하면 똑같이 400 에러가 발생한다는 현상을 발견하게 되었다.

이 문제를 해결하기 위해 어떻게 해야할까 고민하다가 며칠전에 객체를 바인딩할 때 생성자를 사용해서 바인딩한다는 사실을 알게 되었었는데 이를 활용해보면 되겠다고 생각을 해서 닥치는대로 해보았다.

public BoardRequest(String title, String content, String dueDay, String startDate, String endDate,
                    String area, String detailArea, List<Tag> tags) {
    this.title = title;
    this.content = content;
    this.boardImage = null;
    this.dueDay = dueDay;
    this.startDate = startDate;
    this.endDate = endDate;
    this.area = area;
    this.detailArea = detailArea;
    this.tags = tags;
}

이미지를 null로 받는 경우에 객체를 바인딩하기 위해 이미지를 null로 초기화시키는 생성자를 하나 만들었다.

0개의 댓글

관련 채용 정보