HTTP 클라이언트

Axios vs Got

어떤 HTTP 클라이언트를 쓸까?

기본

AxiosGot
주간 다운로드11981만3880만
최근 릴리스15일 전39일 전
유지보수활발활발
열린 이슈670

유지보수 상태는 최근 릴리스 간격만으로 판정합니다 (90일 이내 활발 · 270일 이내 둔화 · 그 이상 정체).

쓰다 보면 만나는 것

Axios

  • 거슬림

    axios를 ESM으로 임포트해도 트리셰이킹으로 번들 크기가 거의 줄지 않아, 사용하지 않는 기능까지 포함된 채 최종 번들에 남는다.

    axios는 함께 포함되는 의존성(예: mime-db 같은 데이터 테이블)과 내부 구조 탓에 번들러가 미사용 코드를 충분히 제거하지 못한다. 프런트엔드에서는 실제 사용량과 무관하게 gzip 기준 약 12~14KB(구버전 기준 약 22KB)의 고정 비용이 남고, 서버 측에서는 mime-db 의존성 때문에 트리셰이킹 후에도 산출물이 크게 늘어난 사례가 보고됐다(원본 이슈). 단순 요청만 필요한 프런트엔드나 콜드스타트가 민감한 서버리스에서는 네이티브 fetch로 대체해 이 비용을 줄일 수 있다.

    2025-10 · 미해결

  • 거슬림

    axios 1.19.0이 request 반환 타입 R의 기본값을 export하지 않은 unique symbol 브랜드 타입으로 두면서, 이를 재노출하는 패키지의 TypeScript 선언 파일 생성이 TS2527로 실패한다.

    1.19.0의 index.d.ts에서 노출되지 않은 unique symbol이 request 시그니처의 기본 타입에 쓰여, axios 타입을 다시 내보내는 라이브러리(예: openapi-generator의 typescript-axios 클라이언트)의 declaration emit이 TS2527로 중단된다. 생성 코드에 명시적 Promise<R> 주석과 캐스팅을 넣거나 axios를 1.19.0 이전 버전으로 고정하는 것이 현재 우회법이다. 원본 이슈와 Cambridge GitLab의 CI 템플릿 패치 MR이 동일한 1.19.0 타입 회귀를 가리킨다.

    2026-08 · 미해결 · 1.19.0

Got

  • 거슬림

    최신 메이저는 순수 ESM이라 CommonJS 프로젝트에서 require()로 쓸 수 없다

    공식 README가 명시한다 — "This package is native ESM and no longer provides a CommonJS export." CJS 코드베이스는 동적 import()로 우회하거나 구버전에 머물러야 하는데, 구버전(v11)은 유지보수가 끝났다. ESM 전환 당시 생태계 전반에서 큰 마찰이 있었고 지금도 CJS 레거시 프로젝트에는 실질 제약이다.

    2026-08 · 미해결

이럴 땐 이걸

  • Node 서버에서 재시도·훅 등 풀기능 Got
  • 레거시 호환·팀의 기존 관성 Axios

문서 바로가기