Fetch API 최종 수정일 2026-06-18 23:20 조회수 11
대시보드

Fetch API

기본 정보

  • 명칭: Fetch API
  • 분류: JavaScript 웹 API
  • 개발 주체: WHATWG
  • 주요 용도: 서버와 비동기 HTTP 통신
  • 지원 환경: 최신 브라우저, Node.js(일부 버전 이상)
  • 관련 주제: #FetchAPI #AJAX #JavaScript #RESTAPI #JSON

개요

Fetch API는 JavaScript에서 HTTP 요청을 보내고 응답을 처리하기 위한 표준 웹 API이다.

기존 XMLHttpRequest보다 문법이 간결하고 Promise 기반으로 동작하며, async/await와 함께 사용하면 가독성이 높은 비동기 코드를 작성할 수 있다.

현재 React, Vue.js, Node.js 기반 프로젝트에서도 널리 사용되고 있다.


Fetch API 구조

사용자

↓

JavaScript

↓

Fetch API

↓

HTTP Request

↓

REST API

↓

Database

↓

JSON Response

↓

화면 출력

동작 과정

버튼 클릭

↓

fetch()

↓

HTTP 요청

↓

서버 처리

↓

JSON 응답

↓

JavaScript 처리

↓

화면 갱신

기본 문법

fetch("/api/users")

  .then(response => response.json())

  .then(data => {

    console.log(data);

  });

GET 요청

fetch("/api/users")

  .then(res => res.json())

  .then(data => {

    console.log(data);

  });

데이터를 조회할 때 사용한다.


POST 요청

fetch("/api/users", {

  method: "POST",

  headers: {

    "Content-Type": "application/json"

  },

  body: JSON.stringify({

    name: "홍길동"

  })

});

데이터를 생성할 때 사용한다.


PUT 요청

fetch("/api/users/1", {

  method: "PUT",

  headers: {

    "Content-Type": "application/json"

  },

  body: JSON.stringify({

    name: "김철수"

  })

});

전체 데이터를 수정할 때 사용한다.


PATCH 요청

fetch("/api/users/1", {

  method: "PATCH",

  headers: {

    "Content-Type": "application/json"

  },

  body: JSON.stringify({

    age: 31

  })

});

일부 데이터만 수정할 때 사용한다.


DELETE 요청

fetch("/api/users/1", {

  method: "DELETE"

});

데이터를 삭제할 때 사용한다.


async / await

async function loadUsers() {

  const response =

    await fetch("/api/users");

  const data =

    await response.json();

  console.log(data);

}

실무에서는 Promise 체인보다 async/await 방식이 많이 사용된다.


응답(Response)

const response =

await fetch("/api/users");

대표 속성

속성설명
statusHTTP 상태 코드
ok성공 여부
headers응답 헤더
body응답 본문

JSON 변환

const data =

await response.json();

JSON 응답을 JavaScript 객체로 변환한다.


Text 변환

const text =

await response.text();

문자열 응답을 받을 때 사용한다.


Blob 변환

const file =

await response.blob();

이미지나 파일 다운로드에 활용된다.


에러 처리

try {

  const response =

    await fetch("/api/users");

} catch(error) {

  console.log(error);

}

네트워크 오류 등에 대비해 예외 처리를 구현하는 것이 좋다.


Authorization Header

JWT 인증 예시

fetch("/api/user", {

  headers: {

    Authorization:

    "Bearer TOKEN"

  }

});

파일 업로드

const formData =

new FormData();

formData.append(

"file",

file

);

fetch(

"/upload",

{

method:"POST",

body:formData

}

);

Content-Type은 브라우저가 자동 설정하므로 직접 지정하지 않는 것이 일반적이다.


쿠키 포함 요청

fetch(

"/api/user",

{

credentials:"include"

}

);

Session 기반 인증에서 사용된다.


Fetch와 AJAX(XMLHttpRequest) 비교

Fetch APIXMLHttpRequest
Promise 기반Callback 기반
문법 간결코드가 복잡
async/await 지원지원 안 함
최신 표준레거시 방식
신규 프로젝트 권장기존 프로젝트 유지보수

Fetch와 Axios 비교

Fetch APIAxios
브라우저 내장라이브러리 설치 필요
추가 설치 불필요기능 풍부
JSON 변환 직접 호출자동 변환
Timeout 직접 구현기본 지원
Interceptor 없음Interceptor 지원

대표 활용 분야

  • 로그인
  • 회원가입
  • 게시판
  • 쇼핑몰
  • ERP
  • 관리자 페이지
  • SPA
  • 모바일 웹

장점

  • 브라우저 기본 제공
  • Promise 기반
  • async/await 사용 가능
  • REST API와 잘 어울림
  • 코드가 간결함
  • 유지보수가 쉬움

단점

  • HTTP 오류(404, 500)를 자동으로 예외 처리하지 않음
  • Timeout 기능 내장 없음
  • Interceptor 기능 없음
  • 구형 브라우저에서는 지원 제한

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • async/await 사용
  • try...catch로 예외 처리
  • response.ok 확인 후 처리
  • JWT는 Authorization Header 사용
  • Session 인증은 credentials: "include" 설정
  • 공통 API 함수로 래핑하여 재사용
  • AbortController로 요청 취소 기능 구현
  • 응답 형식(success, message, data) 표준화
  • 로딩 상태 관리
  • API 오류 로그 기록

Fetch API와 함께 사용하는 기술


대표 활용 사례

  • React 데이터 조회
  • Vue 관리자 페이지
  • 게시글 등록
  • 댓글 작성
  • 로그인 인증
  • 상품 목록 조회
  • 파일 업로드
  • 실시간 검색

관련 문서


출처

  • MDN Web Docs - Fetch API
  • WHATWG Fetch Standard
  • JavaScript Fetch API Specification