본문 바로가기
-- 오늘 있었던 개발 일기

오늘의 개발 문제 : DTO 필드명 불일치

by code study 2025. 12. 9.

오늘 게시판 프로젝트에서 매우 짜증나는 일들이 있었다.

게시글 목록을 불러왔는데, 제목만 정상적으로 나오고 작성자랑 작성일은 전부 undefined였다. 처음엔 DB 문제인가 싶어서 H2 콘솔을 열어봤다. 데이터는 멀정하고 API 응답도 확인해봤다. JSON도 잘 온다.

 

한참을 헤맸다. 그러다 발견했다. 범인은 명명 규칙이었다.

백엔드 DTO에서는 board_id, member_email 같은 스네이크 케이스를 쓰고 있었고, 프론트엔드에서는 습관적으로 boardId, memberEmail 같은 카멜 케이스로 접근하고 있었다. Java에서 스네이크 케이스로 필드를 정의하면 JSON으로 변환될 때도 그대로 스네이크 케이스로 나간다. 근데 나는 당연히 카멜 케이스일 거라고 생각하고 접근했었으니 당연히 undefined가 뜬 거다.

결국 프론트엔드 코드를 백엔드에 맞춰서 스네이크 케이스로 수정했다. DB 컬럼명도 스네이크 케이스라 일관성도 맞고, 백엔드 코드는 건드릴 필요가 없어서 가장 간단한 방법이었다.

 

해당 과정을 겪으면서 다음 프로젝트에선 코딩 컨벤션 문서부터 필수적이다라고 느꼈다. TypeScript 도입도 진지하게 고민해봐야 할 것 같다. 타입 정의가 있었으면 이런 실수는 컴파일 단계에서 바로 잡혔을 테니까.

어쨌든 해결했으니 됐다. 오늘도 하나 배웠다.