강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

영우님의 프로필 이미지
영우

작성한 질문수

코드로 배우는 React 19 with 스프링부트 API서버

Axios의 인터셉터

JWT 설정 후 JSON 데이터가 문자열로 옵니다...

작성

·

37

0

📤 before request

jwtUtil.ts:30 Response Received

jwtUtil.ts:34 📦 Content-Type: application/json

jwtUtil.ts:35 🧾 typeof res.data: string

content-type은 json 형식으로 맞춰 주었는데 정작 데이터가 String으로 와서 list에 뿌려주지를 못하고 있습니다.

Postman으로 확인했을 때는 정상적으로 JSON 데이터를 반환받는데 리액트에서 확인할려면 res.data가 "{\"dtoList\":[{\"tno\":115,\"title\":\"123zzzㅋㅋㅋㅋ\",\"content\":null,\"complete\":false,\"dueDate\":\"2025-08-07\",\"writer\":\"123\"}
위와 같이 스트링 형식으로 변환되어서 들어와서 오류가 생깁니다.
어디가 문제일까요..ㅠㅠ

답변 2

0

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

문제는 API서버 쪽인듯 합니다.

 

조회하는 경우이니

API서버를 브라우저에서 호출했을때 JSON형식으로 반환되는지를 확인해 봐야할 듯 합니다.

 

컨트롤러에서 객체를 반환하면 기본적으로 JSON으로 변환이 되어서 전송되는 것을 먼저 체크해 보셔야 할것 같네요..

 

axios를 이용하시니 정상적이면 JSON.parse가 필요하지는 않으실 겁니다.

 

영우님의 프로필 이미지
영우
질문자

postman으로 응답시에 json이 정상적으로 들어와도 스프링쪽 문제일까요?
postman으로 베어러 토큰을 넣고 api/todo/list로 send하게 되면 정상적으로 json 데이터가 나오게 됩니다

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

흠.. 그렇다면 서버는 문제가 없다는 건데요

 

혹시 인증 기능을 잠시 중지하고 먼저 테스트해보시는게 어떨까요

영우님의 프로필 이미지
영우
질문자

그러면 간단하게 일단 gradle에서 시큐리티 부분만 빼도 상관없을까요?

영우님의 프로필 이미지
영우
질문자

jwt랑 시큐리티부분 gralde에서 주석처리하고 관련되어 있는 코드들 전부 주석처리 하니깐 정상적으로 리스트가 출력이 되네여.. 어디가 문제일까여 4시간 동안 디버깅하고 있는데 죽을 노릇이네여

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

예제코드와 디른점이 있을까요?

 

추가적인 기능이나 라이브러리 버전 문제가 가장 의심됩니다.

 

캐싱등을 이용해서 문제가 생기는 경우가 간혹 있긴하던데..

 

 

Jwt라이브러리 버전도 체크해주세요

영우님의 프로필 이미지
영우
질문자

혹시 저자님 소스코드는 github에서 확인하면 될까요?

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

해당 강의 섹션의 마지막에 수업자료로 첨부되어 있습니다

영우님의 프로필 이미지
영우
질문자

jwt 버전이 강사님 gradle에 있는 버전과 다르길래 바꾸고 7장에서 한 모든 코드를 강사님이 하신 코드로 바꾸고
8장에서 한 리액트 코드도 강사님이 하신 코드로 전부 바꿧는데도 똑같이 json이 string으로 오네요 ㅎㅎ...

영우님의 프로필 이미지
영우
질문자

queryDSL쪽 문제였네요 ㅎㅎ ㅋㅋㅋㅋㅋ 호환성에 문제가 있었나 봅니다. 몇 시간동안 삽질한게 겨우 queryDSL 문제였다는게 자괴감이 오네요

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

음... 언뜻 이해가 좀 안되긴 합니다만.. 그래도 해결하셨다니 다행입니다. ㅠㅠ

0

안녕하세요, 인프런 AI 인턴입니다.

영우님이 겪고 계신 문제는 주로 서버에서 클라이언트로 데이터를 전송하는 과정에서 JSON 데이터가 문자열 포맷으로 응답되어 오는 상황에 관한 것입니다. 이는 주로 서버 또는 HTTP 클라이언트 설정에서 발생할 수 있는 유사한 문제입니다.

문제 원인 및 해결 방안:

  1. 서버 측 설정 확인:

    • 서버 응답 헤더에 Content-Type'application/json'으로 명확히 설정되었는지 확인하세요. 이를 통해 서버가 반환하는 데이터가 JSON 형식으로 해석될 수 있습니다.
  2. React 사용 중 Axios 설정 확인:

    • Axios를 사용 중이시라면, 요청 헤더에 'Content-Type': 'application/json'이 올바르게 설정되어 있는지 확인하시고, 추가로 responseType: 'json' 옵션이 필요할 수 있습니다.
  3. 데이터 파싱 추가:

    • 만약 여전히 문자열로 응답이 온다면, React 컴포넌트에서 다음과 같이 수동으로 JSON 파싱을 시도해 볼 수 있습니다:
      
      useEffect(() => {
      axios.get('api_url')
       .then(response => {
         const jsonResponse = JSON.parse(response.data);
         // 여기서 jsonResponse를 사용하여 상태 업데이트 등 수행
       })
       .catch(error => {
         console.error('데이터를 파싱하는 동안 오류가 발생했습니다:', error);
       });
      }, []);
      

참고할 유사 질문 URL:

위의 방법들을 통해 문제를 해결하실 수 있기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

영우님의 프로필 이미지
영우

작성한 질문수

질문하기