Project : Axios encoding

lunaxislu·2024년 1월 30일

project

목록 보기
10/17

공휴일 API를 사용하여 캘린더에 맵핑 하려고 했는데...

공휴일 명세서에는 XMLHttpRequest() 를 사용해서 데이터를 불러오게끔 했는데

Next js 의 getStaticProps로 불러오려고 할 때 사용할 수가 없었다.

이유는 XML 은 브라우저상에서 사용하는 메소드이고 내가 구현 하려고 하는 곳은 서버이기에 사용 할 수 가 없었다.




따라서 axios를 사용하는 방법을 선택했다.

axios는 기본적으로 xmlHttpRequest를 사용하고 서버상에서 (node)도 동작하기에 알맞았다.

그런데...

data 상에서 undefined 가 뜬다.

Thunder Client 상에서는 data가 받아와 지는데 ....

pages/sales 에서는 data가 undefined가 뜬다.

아래 코드로 terminal 창을 확인해 봤는데...

  const url = process.env.NEXT_PUBLIC_HOLIDAY_URL;
  const API_KEY = process.env.NEXT_PUBLIC_HOLIDAY_API_KEY;

  const query = {
    ServiceKey: API_KEY,
    solYear: '2023',
    numOfRows: '30',
    _type: 'json',
  };
  try {
    const result = await axios.get(url!, {
      params: query,
    });

  console.log(result)
  } catch (err) {
 
  }

termina url을 확인해 보니

API KEY 는 끝자리가 %03%03 인데

axios로 요청 보낸 queryKey는 api key의 끝자리는 %253D%253D 로 끝난다.

원인을 알아보니 axios 자체 내부적으로 내 QUERY KEY 의 값의 %INCODING 한다 ....

그래서 어쩔 수 없이 우선 query 객체를 빼고



url 에 query key 까지 다 써서 data를 받아오기로 우선 선택했다.

0개의 댓글