빠른 참조

JavaScript Fetch API 치트시트

JavaScript 기본 fetch() API에 대한 빠른 참조 가이드: GET/POST 요청, JSON 페이로드, 헤더 설정, FormData 전송 및 AbortController 요청 취소.

· 게시일

JavaScript 기본 fetch() API는 최신 웹 브라우저 및 Node.js 환경에서 네트워크 리소스를 비동기적으로 가져오는 표준 인터페이스를 제공합니다.

기본 HTTP 요청

GET 요청 (JSON 데이터 조회)

async function loadUserData() {
  const response = await fetch('https://api.example.com/user/1');
  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`);
  }
  const data = await response.json();
  return data;
}

POST 요청 (JSON 페이로드 전송)

async function createUser(payload) {
  const response = await fetch('https://api.example.com/users', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    },
    body: JSON.stringify(payload)
  });
  return await response.json();
}

폼 데이터 전송 (multipart/form-data)

const formData = new FormData();
formData.append('username', 'alice');
formData.append('avatar', fileInput.files[0]);

// 브라우저가 boundary 경계값을 자동 설정하도록 Content-Type 헤더를 생략합니다
await fetch('/upload', {
  method: 'POST',
  body: formData
});

요청 취소 및 타임아웃 처리 (AbortController)

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

// 5초 후 자동으로 요청 취소
const timeoutId = setTimeout(() => controller.abort(), 5000);

try {
  const res = await fetch('https://api.example.com/data', { signal });
  const data = await res.json();
  clearTimeout(timeoutId);
  return data;
} catch (err) {
  if (err.name === 'AbortError') {
    console.warn('요청이 타임아웃되었거나 취소되었습니다');
  } else {
    console.error('Fetch error:', err);
  }
}

HTTP 헤더, 인증 및 자격 증명

const headers = new Headers();
headers.set('Authorization', 'Bearer token_xyz123'); // Bearer 토큰 인증 헤더
headers.set('X-Custom-Header', 'custom-value');

const response = await fetch('/api/secure', {
  headers,
  credentials: 'include' // 교차 출처 요청 시 쿠키 자격 증명 포함
});

관련 참고 자료

관련 주제