본문 바로가기

오류 해결 방법

[web] 서버에서 생성한 데이터가 fetch된 JSON에 보이지 않음

1. 문제 증상

  • 클라이언트에서 어떤 데이터를 서버에 전송했을 때,
    서버는 내부적으로 추가 계산을 해서(예: 본문 중 앞 20자만 잘라 요약 텍스트를 만듦) 새로운 값을 생성함.
  • 백엔드 로그상으로는 값이 잘 생성되고 저장까지 되었지만,
    클라이언트가 받은 JSON 응답에는 그 값이 보이지 않음.

2. 원인 분석

  1. 서버 쪽은 정상 작동
    • 서버 로그와 저장 결과를 확인해보니 값이 생성되어 처리까지 됨.
    • 따라서 직렬화 문제나 서버 로직 오류는 아님.
  2. 클라이언트 요청 경로가 잘못됨
    • 클라이언트가 데이터를 조회할 때 올바른 API 주소가 아닌 다른 주소를 호출하고 있었음.
    • 그 결과 서버가 내려주는 데이터 구조가 달라져, 기대한 값이 응답에 포함되지 않음.
  3. 클라이언트에서 서버 응답을 무시
    • 데이터를 보낸 뒤 서버가 돌려준 응답(JSON)을 사용하지 않고,
      클라이언트가 직접 보낸 요청 데이터를 그대로 다시 쓰고 있었음.
    • 서버에서 생성한 값은 요청에는 없기 때문에 당연히 화면에 표시되지 않음.

3. 해결 과정

  • API 주소를 올바르게 수정
    • 잘못된 요청 경로 대신 서버 문서에 정의된 정확한 경로를 호출하도록 변경.
    • 이로써 서버가 내려주는 값이 응답에 포함됨.
  • 서버 응답을 실제로 사용하도록 코드 수정
    • 단순히 요청 바디를 재사용하지 않고,
      서버가 돌려준 res.data(응답 JSON)를 기반으로 화면을 갱신.
    • 이제 서버에서 생성한 값도 정상적으로 표시됨.

4. 교훈

  1. 응답(JSON)을 반드시 확인하라
    • 데이터를 보낸 뒤 서버가 어떤 응답을 내려주는지, Network 탭에서 직접 확인해야 한다.
  2. API 경로를 정확히 맞춰라
    • 프론트엔드와 백엔드가 서로 다른 주소를 쓰면, 데이터 구조가 달라져 원하는 값을 못 받는다.
  3. 서버가 생성해주는 값은 요청 바디에 없다
    • 서버에서 새로 계산하거나 추가하는 값은 오직 응답을 통해서만 확인 가능하다.
    • 따라서 항상 res.data를 기반으로 상태를 갱신해야 한다.