성장 경험/회사 업무 기록

[회사 업무 기록] 회사 19주차 - 인터페이스 정의서, 테스트, 리펙토링

Tarake 2025. 6. 13. 21:27

이번 주 업무 요약

  • 인터페이스 정의서 수정
  • Postman을 이용한 백엔드 서버 테스트
  • 프론트엔드와 API 명세 조율 및 테스트
  • 코드 리펙토링

 

주요 작업

응답 Json 구조 변경

  • 기존 : "msg" : "success" 와 같은 메시지 기반 구조
  • 변경 : "status" : true/false 로 응답 구조 통일

ResponseDTO 도입

  • 기존 : ResponseEntity<Map<String, Object>> 혹은 ResponseEntity<Object> 등의 형식으로 반환
  • 변경 : ResponseDTO<T> 클래스를 생성하여 메시지 및 데이터 구조를 통일

응답 DTO 처리 위치 변경

  • 기존 : 컨트롤러 계층에서 DTO 매핑
  • 변경 : 서비스 계층으로 응답 DTO 매핑 책임을 이전 → 코드 가독성과 책임 분리 향상

API 반환 구조 검증

  • Postman 환경에서 JSON 응답 구조 검토 및 테스트 수행

예외 처리

  • 기존 : Exception 하나로 모든 에러에 대한 예외 처리
  • 변경 : 각 기능에서 발생할 수 있는 예외 DataAccessException 등 으로 변경

 

트러블 슈팅

문제 상황

  • RequestDTO에서 isDetected 필드 null 일 경우 역직렬화 시도 중 오류 발생

원인 분석

  • session.getIsDetected() 가 null인 경우에도 readValue() 실행 → NullPointerException 또는 JsonProcessingException 발생 가능

해결 방법

if (session.getIsDetected() != null) {
    this.isDetected = objectMapper.readValue(
        session.getIsDetected(),
        new TypeReference<Map<String, Boolean>>() {}
    );
} else {
    this.isDetected = null;
}

배운 점

  • Json 역직렬화는 항상 null 체크와 예외 처리를 동반해야 안정적인 코드 작성 가능

 

다음 주 목표

  • 서비스 계층 리팩토링 마무리
  • 프론트엔드와 협업하여 실제 사용 시나리오 기반 API 테스트 진행