camelCase 요청 데이터를 snake_case로 변환하기

2024. 11. 5. 16:02·React
반응형

 

🐫 snake_case 응답 데이터를 camelCase로 변환하기

 

이전에 백엔드(Python)에서 프론트엔드(React)로 보내는 응답을 받았을 때, snake_case로 작성되어 있어서 프론트엔드 코드와 key가 맞지 않는 문제가 있었다. 그래서 camelcase-keys 라이브러리를 사용했다.

 

이번에는 파라미터에 값을 넣고 보내려고 하니까 400번대가 뜨는 거 아닌가..?! 확인해보니 파라미터명이 맞지 않았다.

생각해 보니 내 코드는 camelCase로 작성되어 있어서 요청할 때도 snake_case로 바꿔서 보내야 하는 것이었다..

 

당연한데 저땐 생각 못했당 ㅠ 그래서 찾아보니 snakecase-keys 라이브러리도 있었다!! (앗싸)

 

🐍 snakecase-keys

  • yarn, npm
yarn add snakecase-keys

 

위 패키지를 설치해서 사용하면 된다.

이번에도 모든 요청을 camelCase에서 snake_case로 변환해야 했기에 axios interceptor를 활용해 구현했다.

 

import axios from 'axios';
import camelcaseKeys from 'camelcase-keys';
import snakecaseKeys from 'snakecase-keys';

const axiosInstance = axios.create({
  baseURL: import.meta.env.VITE_API_URL,
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
  },
  withCredentials: true,
});

// 응답: snake_case -> camelCase
axiosInstance.interceptors.response.use(
  (response) => {
    response.data = camelcaseKeys(response.data, { deep: true });
    return response;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 요청: camelCase -> snake_case
axiosInstance.interceptors.request.use(
  (config) => {
    if (config.data) {
      config.data = snakecaseKeys(config.data, { deep: true });
    }
    if (config.params) {
      config.params = snakecaseKeys(config.params, { deep: true });
    }
    return config;
  },
  (error) => Promise.reject(error)
);

export default axiosInstance;
반응형

'React' 카테고리의 다른 글

[React] 컴포넌트 생명주기 : useEffect, 마운트, 언마운트  (0) 2025.05.01
[React/S3] 이미지 저장 구현 (+ CORS 에러 해결)  (0) 2024.11.16
snake_case 응답 데이터를 camelCase로 변환하기  (0) 2024.11.04
[React] React Router 총정리  (0) 2024.08.26
'React' 카테고리의 다른 글
  • [React] 컴포넌트 생명주기 : useEffect, 마운트, 언마운트
  • [React/S3] 이미지 저장 구현 (+ CORS 에러 해결)
  • snake_case 응답 데이터를 camelCase로 변환하기
  • [React] React Router 총정리
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (196) N
      • SSAFY (10)
      • Algorithm (114) N
        • 이론 (6)
        • 백준 (BOJ) (107) N
        • 프로그래머스 (1)
      • Trouble Shooting (9)
      • Frontend (6)
      • React (17)
      • Next.js (4)
      • Vue (4)
      • Node.js (2)
      • HTML (9)
      • DevOps (4)
        • Git (4)
      • Language (9)
        • JavaScript (0)
        • Java (9)
      • Embedded (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
      • 자격증 (2)
  • 블로그 메뉴

    • GitHub
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    수학
    알고리즘
    파이썬
    dfs
    SSAFY
    DP
    힙
    백준
    티스토리챌린지
    중복순열
    Algorithm
    Error
    오블완
    구현
    SSAFYcial
    브루트포스
    Next.js
    재귀
    강의
    우선순위큐
    Java
    html5
    Heap
    블록체인
    React
    싸피
    백트래킹
    bfs
    중복조합
    순열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
올콩
camelCase 요청 데이터를 snake_case로 변환하기
상단으로

티스토리툴바