Axios 대 Fetch: HTTP 요청에 가장 적합한 것은 무엇인가?

JavaScript에서 HTTP 요청을 만드는 방법은 여러 가지가 있지만, 가장 인기 있는 두 가지 방법은 Axios와 fetch()입니다. 이 글에서는 이 두 가지 방법을 비교하고 어떤 상황에서 더 나은지 살펴보겠습니다.

Young-jae

Young-jae

11 June 2025

Axios 대 Fetch: HTTP 요청에 가장 적합한 것은 무엇인가?

HTTP 요청는 서버 및 API와의 통신에서 필수적입니다. JavaScript에서 HTTP 요청을 수행하는 방법은 여러 가지가 있지만, 가장 인기 있는 두 가지는 Axios와 fetch()입니다. 이 게시물에서는 Axios와 Fetch()를 비교하고 서로 다른 상황에 가장 적합한 것을 살펴보겠습니다.

button

Axios란?

Axios는 HTTP 요청을 수행하기 위한 promise 기반 HTTP 클라이언트를 제공하는 서드파티 라이브러리입니다. Axios는 JavaScript 커뮤니티에서 널리 사용되며, 단순성과 유연성으로 잘 알려져 있습니다.

Axios의 기본 문법

Axios 라이브러리의 기본 문법은 다음과 같습니다:

axios(config)
  .then(response => console.log(response.data))
  .catch(error => console.error('Error:', error));

주요 기능:

  1. URL과 구성을 포함하는 객체를 매개변수로 받을 수 있으며, 또는 별도의 URL 및 구성 객체를 사용할 수 있습니다.
  2. data 속성을 사용하여 서버에 데이터를 전송하며, 자동으로 JSON 변환을 처리합니다.
  3. 응답 객체의 data 속성에서 서버 데이터를 직접 반환합니다.
  4. HTTP 오류 상태 코드를 자동으로 처리하며, catch 블록으로 전달합니다.
  5. 보다 간소화된 오류 처리 메커니즘을 제공합니다.

예시:

axios({
  method: 'post',
  url: 'https://api.example.com/data',
  data: {
    key: 'value'
  }
})
  .then(response => console.log(response.data))
  .catch(error => {
    if (error.response) {
      console.error('서버가 응답했습니다:', error.response.status);
    } else if (error.request) {
      console.error('응답을 받지 못했습니다.');
    } else {
      console.error('오류:', error.message);
    }
  });

Axios를 사용해야 하는 이유는 무엇인가요?

다음과 같은 여러 기능이 있어 사용하기 쉽고 편리합니다:

Fetch()란?

fetch()는 네이티브 JavaScript와 함께 제공되는 내장 API입니다. 비동기 웹 API로서 데이터를 promises 형태로 반환합니다. fetch()는 모든 최신 브라우저에서 지원되므로 외부 라이브러리를 가져올 필요가 없습니다. fetch()의 일부 기능은 다음과 같습니다:

HTTP 요청을 만들기 위해 Axios를 사용하는 방법은?

Axios를 사용하려면 npm 또는 yarn을 사용하여 설치해야 합니다:

npm install axios

yarn을 사용하여 Axios를 설치하는 방법은 다음과 같습니다:

yarn add axios

pnpm을 사용하는 경우 다음 명령어로 Axios를 설치할 수 있습니다:

pnpm install axios

또는 콘텐츠 전송 네트워크(CDN)를 사용하여 프로젝트에 Axios를 포함할 수 있습니다. 다음은 CDN을 사용하여 Axios를 포함하는 방법입니다:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

그런 다음 JavaScript 파일에서 가져와 HTTP 요청을 수행하는 데 사용할 수 있습니다. 예를 들어, URL에 GET 요청을 수행하려면 axios.get()을 사용하면 됩니다:

import axios from 'axios';

axios.get('https://example.com/api')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

Fetch로 HTTP 요청 만들기

fetch()를 사용하려면 이미 브라우저에서 사용 가능하므로 아무것도 설치할 필요가 없습니다. fetch() 함수를 사용하여 HTTP 요청을 수행할 수 있습니다. 예를 들어, URL에 GET 요청을 하려면 다음과 같이 fetch()를 사용할 수 있습니다:

fetch('https://example.com/api')
  .then(response => {
    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });

다음 사항에 유의하세요:

Fetch의 기본 문법

물론입니다. 요청하신 대로 두 부분으로 나눠 영어 내용을 제공하겠습니다.

Fetch API의 기본 문법은 다음과 같습니다:

fetch(url, options)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('오류:', error));

주요 기능:

  1. URL을 첫 번째 인수로, 선택적 구성 객체를 두 번째 인수로 사용합니다.
  2. body 속성을 사용하여 서버에 데이터를 전송하며, 데이터의 문자열 변환이 수동으로 필요합니다.
  3. 응답 정보가 포함된 Response 객체를 반환합니다.
  4. 네트워크 오류가 발생해야만 catch 블록에 들어가며, HTTP 오류 상태 코드에서는 들어가지 않습니다.
  5. HTTP 오류를 처리하기 위해 응답 상태 코드를 수동으로 확인해야 합니다.

예시:

fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ key: 'value' })
})
  .then(response => {
    if (!response.ok) {
      throw new Error('HTTP 오류 ' + response.status);
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('오류:', error));

Axios vs Fetch: 쿼리 매개변수가 있는 GET 요청 전송:

// Axios
axios.get('/api/data', {
  params: {
    name: 'Alice',
    age: 25
  }
})
.then(response => {
  // 응답 처리
})
.catch(error => {
  // 오류 처리
});

// Fetch
const url = new URL('/api/data');
url.searchParams.append('name', 'Alice');
url.searchParams.append('age', 25);

fetch(url)
.then(response => response.json())
.then(data => {
  // 데이터 처리
})
.catch(error => {
  // 오류 처리
});

Axios vs Fetch: JSON 본문이 있는 POST 요청 전송:

// Axios
axios.post('/api/data', {
  name: 'Bob',
  age: 30
})
.then(response => {
  // 응답 처리
})
.catch(error => {
  // 오류 처리
});

// Fetch
fetch('/api/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Bob',
    age: 30
  })
})
.then(response => response.json())
.then(data => {
  // 데이터 처리
})
.catch(error => {
  // 오류 처리
});

Axios vs Fetch: 요청에 대한 시간 초과 설정:

// Axios
axios.get('/api/data', {
  timeout: 5000 // 5초
})
.then(response => {
  // 응답 처리
})
.catch(error => {
  // 오류 처리
});

// Fetch
const controller = new AbortController();
const signal = controller.signal;

setTimeout(() => {
  controller.abort(); // 5초 후 중단
}, 5000);

fetch('/api/data', { signal })
.then(response => response.json())
.then(data => {
  // 데이터 처리
})
.catch(error => {
  // 오류 처리
});

Axios vs Fetch: async/await 문법 사용:

// Axios
async function getData() {
  try {
    const response = await axios.get('/api/data');
    // 응답 처리
  } catch (error) {
    // 오류 처리
  }
}

// Fetch
async function getData() {
  try {
    const response = await fetch('/api/data');
    const data = await response.json();
    // 데이터 처리
  } catch (error) {
    // 오류 처리
  }
}

Axios vs Fetch: 하위 호환성

하위 호환성이란 새로운 시스템이나 애플리케이션이 구 버전과 함께 작동할 수 있는 능력을 의미하며, 업그레이드 시 매끄러운 전환과 중단 또는 고장을 방지하는 데 중요합니다. 이는 소프트웨어 개발, 웹 개발, 기술 생태계에서 안정성, 호환성 및 일관된 버전과 플랫폼 유지를 위해 중요합니다.

Axios:

Fetch:

Axios vs Fetch: 오류 처리

오류 처리는 HTTP 요청을 만드는 데 중요한 측면으로, 네트워크 실패, 서버 오류 또는 잘못된 응답과 같은 다양한 시나리오를 처리할 수 있습니다. Fetch와 Axios는 오류를 처리하는 방법이 다르며, 몇 가지 예를 통해 비교하겠습니다.

Axios:

Axios에서는 요청 실패가 발생하면 오류를 발생시키고, try-catch 블록으로 쉽게 오류를 처리하며 error.response.data에서 오류 데이터를 가져올 수 있습니다. 예를 들어:

// Axios 오류 처리: try-catch
try {
  const response = await axios.get('/api/data');
  // 응답 처리
} catch (error) {
  // 오류 처리
  console.log(error.response.data);
}

Fetch:

Fetch에서는 요청 실패가 발생하면 오류를 발생시키지 않고, ok 속성이 false로 설정된 응답 객체를 반환합니다. ok 속성을 확인하고 try-catch 블록을 사용하려면 수동으로 오류를 발생시켜야 합니다.

또는 response.ok 속성을 사용하여 then 방법에서 다양한 경우를 처리할 수 있습니다. 예를 들어:

// Fetch 오류 처리: try-catch
try {
  const response = await fetch('/api/data');
  // 응답 상태 확인
  if (!response.ok) {
    // 상태가 ok가 아닐 경우 오류 발생
    throw new Error(`HTTP 오류! 상태: ${response.status}`);
  }
  // 응답 처리
} catch (error) {
  // 오류 처리
  console.log(error.message);
}

// Fetch 오류 처리: response.ok
fetch('/api/data')
  .then(response => {
    // 응답 상태 확인
    if (response.ok) {
      // 응답 처리
    } else {
      // 오류 처리
      console.log(`HTTP 오류! 상태: ${response.status}`);
    }
  })
  .catch(error => {
    // 네트워크 오류 처리
    console.log(error.message);
  });

Fetch와 Axios 간의 또 다른 차이점은 비-200 상태 코드를 처리하는 방식입니다. Axios는 2xx 범위 밖의 모든 상태 코드를 오류로 간주하고 프로미스를 거부합니다. Fetch는 유효한 HTTP 응답(심지어 4xx 또는 5xx 포함)을 성공으로 간주하고 프로미스를 해결합니다.

이로 인해 비-200 상태 코드를 Fetch와 Axios에서 다르게 처리해야 합니다. 예를 들어:

// Axios 비-200 상태 코드에 대한 오류 처리
axios.get('/api/data')
  .then(response => {
    // 응답 처리
  })
  .catch(error => {
    // 오류 처리
    if (error.response) {
      // 서버가 2xx 범위 밖의 상태 코드로 응답했습니다
      console.log(error.response.status);
      console.log(error.response.data);
    } else {
      // 네트워크 오류 또는 요청이 중단되었다
      console.log(error.message);
    }
  });

// Fetch 비-200 상태 코드에 대한 오류 처리
fetch('/api/data')
  .then(response => {
    // 응답 상태 확인
    if (response.ok) {
      // 응답 처리
    } else {
      // 서버가 2xx 범위 밖의 상태 코드로 응답했습니다
      console.log(response.status);
      return response.json();
    }
  })
  .then(data => {
    // 오류 데이터 처리
    console.log(data);
  })
  .catch(error => {
    // 네트워크 오류 또는 요청이 중단되었다
    console.log(error.message);
  });

Axios vs Fetch: 어떤 것이 HTTP 요청을 만드는 데 가장 좋은가요?

어떤 것이 더 좋은지에 대한 명확한 답변은 없으며, 이는 개인의 취향과 필요에 따라 다릅니다. 그러나 결정을 내리는 데 도움이 되는 몇 가지 일반적인 지침은 다음과 같습니다:

Apidog로 Axios/Fetch 코드 생성하기

Apidog올인원 협업 API 개발 플랫폼으로, API 디자인, 디버깅, 테스트, 게시 및 모킹을 위한 종합적인 툴킷을 제공합니다. Apidog는 HTTP 요청을 만들기 위한 Axios 코드를 자동으로 생성할 수 있도록 해줍니다.

button

여기 Apidog를 사용하여 Axios 코드를 생성하는 과정이 있습니다:

1단계: Apidog를 열고 새 요청을 선택합니다.

새 요청 생성

2단계: 요청을 보낼 API 엔드포인트의 URL을 입력하고, 원하시는 헤더나 쿼리 문자열 매개변수를 입력한 후, "디자인"을 클릭하여 Apidog의 디자인 인터페이스로 전환합니다.

3단계: "클라이언트 코드 생성"을 선택하여 코드를 생성합니다.

클라이언트 코드 생성

4단계: 생성된 Axios 코드를 복사하여 프로젝트에 붙여넣습니다.

Axios 코드

HTTP 요청 전송을 위한 Apidog 사용하기

Apidog는 HTTP 요청을 테스트하는 능력을 더욱 향상시키는 여러 고급 기능을 제공합니다. 이러한 기능은 요청을 사용자 지정하고 보다 복잡한 시나리오를 손쉽게 처리할 수 있도록 해줍니다.

button

1단계: Apidog를 열고 새 요청을 만듭니다.

Apidog

2단계: 만들고자 하는 POST 요청에 대한 API 세부정보를 찾거나 수동으로 입력합니다.

POST 요청

3단계: 필요한 매개변수와 요청 본문에 포함할 데이터를 입력합니다.

Apidog POST 매개변수 및 응답

결론

Axios와 fetch()는 JavaScript에서 HTTP 요청을 만드는 강력하고 신뢰할 수 있는 방법입니다. 프로젝트와 스타일에 더 적합한 방법을 선택하거나, 서로 다른 목적에 대해 두 가지 모두 사용할 수도 있습니다. 중요한 것은 두 방법을 이해하고 효과적으로 사용하는 것입니다.

Apidog를 사용하면 소중한 시간과 노력을 절약할 수 있을 뿐만 아니라, 코드의 정확성과 오류 없음을 보장합니다. 사용자 친화적인 인터페이스와 직관적인 기능으로 인해 Apidog는 Axios 요청을 사용하는 모든 개발자에게 필수적인 도구입니다. 행복한 코딩 되세요!

button

Explore more

Ollama 사용법: Ollama를 이용한 로컬 LLM 완전 초보 가이드

Ollama 사용법: Ollama를 이용한 로컬 LLM 완전 초보 가이드

인공지능의 세계는 끊임없이 발전하고 있으며, 대규모 언어 모델(LLM)은 점점 더 강력해지고 접근성이 높아지고 있습니다. 많은 사람들이 클라우드 기반 서비스를 통해 이러한 모델과 상호작용하지만, 개인 컴퓨터에서 직접 실행하는 데 초점을 맞추는 움직임이 커지고 있습니다. 바로 여기서 Ollama가 등장합니다. Ollama는 Llama 3, Mistral, Gemma, Phi 등 최첨단 LLM을 로컬에서 다운로드, 설정 및 실행하는 복잡한 과정을 획기적으로 단순화하도록 설계된 강력하면서도 사용자 친화적인 도구입니다. 이 포괄적인 가이드는 설치 및 기본 사용법부터 고급 사용자 지정, API 사용 및 필수 문제 해결까지 Ollama를 시작하는 데 필요한 모든 것을 안내합니다. 로컬 LLM을 애플리케이션에 통합하려는 개발자, 다양한 아키텍처를 실험하려는 연구원, 또는 오프라인에서 AI를 실행하는 데 관심이 있는 애호가이든 관계없이 Ollama는 간소화되고 효율적인 플랫폼을 제공합니다. �

28 April 2025

Swagger UI 한국어 무료 다운로드 위치

Swagger UI 한국어 무료 다운로드 위치

Swagger UI 한국어 인터페이스를 얻는 것의 어려움을 탐색하고 Apidog이 API 개발을 위한 강력한 플랫폼 대안인 이유를 알아보세요.

23 April 2025

무료 한국어 Postman 다운로드 방법

무료 한국어 Postman 다운로드 방법

Postman 한국어 버전을 무료로 다운로드할 수 있나요? Postman은 한국어를 네이티브로 지원하지 않지만, 해결 방법은 있습니다. 이 방법들을 살펴보고 언어에 관계없이 전체 API 워크플로우를 간소화하도록 설계된 강력하고 통합된 Postman 대안인 Apidog을 발견하십시오.

22 April 2025

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요