[vue.js] axios vs fetch

dev.sy·2024년 8월 2일

vue.js

목록 보기
4/4

vue.js로 팀 프로젝트를 진행하면서 클라이언트에서 서버로 HTTP 요청을 효율적으로 처리하기 위해 axios나 fetch를 사용한다는 것을 알았다

❓ 왜 HTTP 요청이 필요한가

1. 데이터 전송

웹 애플리케이션은 보통 서버-클라이언트 간 데이터를 주고받음
ex. 유저 로그인 정보, 상품 목록, 유저 프로필 등

2. 비동기 통신

페이지를 다시 로드하지 않고 데이터 갱신 가능
-> 사용자 경험 향상

3. 서버와의 상호작용

CRUD 작업을 서버와 통신하여 처리

❓ 왜 axios나 fetch를 사용하는가

1. 편리성

이 라이브러리들은 HTTP 요청을 쉽게 보낼 수 있는 인터페이스 제공

2. 에러 핸들링

HTTP 요청 성공/실패에 대한 적절한 처리 가능

3. 비동기 처리

Promise 또는 async/await 사용해 비동기 작업 간편하게 관리 가능

4. 유연성

다양한 요청 설정이 쉬움
ex. 헤더 추가, 타임아웃 설정, 요청 취소 등

5. 인터셉터

요청이나 응답을 가로채 공통적인 작업 수행 가능
ex. 인증 토큰 추가, 로깅 등

⚡ 운영환경에서의 중요성

  • 데이터 통신
    대부분의 현대적인 웹 애플리케이션은 서버-클라이언트 간 데이터 통신이 빈번하게 발생
    -> 안정적이고 효율적인 HTTP 클라이언트 필수적
  • 유지보수
    코드의 가독성과 유지보수성 측면에서 반복적인 HTTP 요청 코드를 깔끔하게 관리
  • 성능 최적화
    필요에 따라 요청 최적화, 불필요한 요청 최소화 -> 성능 개선

이외에도 vue.js 프로젝트에서 서버와 데이터 통신을 할 때 사용할 수 있는 다양한 기술들이 있음
  • Vue Resource
  • GraphQL
  • Firebase
  • Socket.io
  • RESTful 라이브러리들

그렇다면!
현재 진행하고 있는 프로젝트에는 axios와 fetch 중 어떤 것을 사용해야할까?

✅ 장단점을 분석해보자

Axios

장점

  1. 간편한 사용법
    XMLHttpRequest를 기반으로 한 라이브러리 -> 사용하기 쉬운 API 제공
  2. 자동 JSON 변환
    요청 및 응답 데이터를 자동으로 JSON으로 변환
  3. 인터셉터
    요청이나 응답을 가로채 로깅이나 인증 토큰 추가 등의 작업 쉽게 수행
  4. 더 많은 기능
    요청 취소, 타임아웃 설정, 응답 데이터 변환 등 fetch에 비해 더 많은 기능 제공
  5. Node.js 지원
    서버사이드에서도 동일한 API 사용 가능

단점

  1. 파일 크기
    외부 라이브러리이기 때문에 프로젝트 빌드 크기 약간 증가
  2. 의존성
    추가적인 외부 라이브러리에 의존

Fetch

장점

  1. 내장 함수
    최신 브라우저에 내장된 기능이기 때문에 별도 설치 필요 X
  2. Promise 기반
    비동기 작업 관리 쉬움
  3. 브라우저 친화적
    최신 브라우저 환경에서는 네이티브로 지원되어 최적화

단점

  1. 지원 브라우저
    구형 브라우저에서는 폴리필 필요
    // todo - 폴리필 설명 추가
  2. JSON 변환 필요
    응답을 JSON으로 변환하려면 추가 처리 필요
    ex. response.json()
  3. 기능 제한
    기본 기능만 제공하기 때문에 인터셉터나 자동 변환 등의 기능은 직접 구현
  4. 에러 핸들링
    네트워크 에러는 Promise를 거부하지만, 404나 500 같은 HTTP 에러는 거부하지 않기 때문에 추가 처리 필요

💡 결론

  • 간편함과 기능성 -> axios
  • 경량성과 최신 브라우저 지원, 기본적인 기능만 필요 -> fetch
profile
Hello, World!

0개의 댓글