← 전체 글로 돌아가기

API

API 응답에서 DTO의 필드가 null이 돼서 터질 때 배포 전 확인

인증, 응답 바디, 필드 정의를 차례대로 확인하면 null 때문의 런타임 에러는 배포 전에 잡을 수 있다.

클라이언트가 받는 API 응답이 예상과 다를 때, 특히 필드가 null이 돼서 에러가 터질 때 참 막난다. 로컬 테스트에서는 안 보이다가 실제 운영 데이터로 테스트할 때 나타난다.

검색해서 들어온 상황이라면 뭐가 문제일 가능성이 높은지부터 생각해야 한다. 인증? 권한? 데이터? 구조?

첫 번째 단서: 인증 상태

curl -i 'https://example.com/api/items?page=1'

요청이 인증되지 않았으면 401이 나온다. 인증은 되는데 권한이 없으면 403이다. 이 차이가 중요하다.

응답 바디를 직접 보기

상태 코드가 200인데 응답 바디가 비어 있거나, 예상한 필드가 없는 경우가 있다. 또는 필드는 있지만 null인 경우.

DTO 정의와 실제 데이터 비교

응답 DTO에서 어느 필드가 optional인지, null일 수 있는지 정의했는가? 백엔드에서 정의한 구조와 클라이언트에서 예상하는 구조가 일치하는가?

먼저 같은 요청을 다시 시도해본다. 응답이 일정한가? 아니면 때에 따라 다른 필드가 null인가? 로그나 응답에서 패턴을 찾는다. 그러면 다음에 배포할 때 어디를 봐야 할지 미리 안다. 배포 전 체크리스트에 추가해두면 비슷한 문제는 반복되지 않는다.