0Pricing
Frontend Academy · 강의

Fetch API: GET, POST, PUT, DELETE

fetch로 GET 요청을 보내고, POST 및 PUT 요청에 JSON 본문을 전송하며, 리소스를 삭제하기 위해 DELETE 엔드포인트를 호출합니다.

Fetch API: GET, POST, PUT, DELETE은(는) CoddyKit의 무료 Frontend Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Frontend Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Frontend Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Fetch API

fetch()는 HTTP 요청을 위한 최신 브라우저 api입니다. 요청 결과로 Response 객체로 이행되는 Promise를 반환합니다. 모든 최신 브라우저와 Node.js 18 이상에서 기본으로 제공됩니다.

기본 GET 요청

가장 간단한 fetch 방식입니다. URL을 전달하고, 응답을 기다린 다음 JSON을 파싱합니다.

async function fetchUsers() {
  const res = await fetch('https://api.example.com/users');
  if (!res.ok) throw new Error('HTTP ' + res.status);
  const users = await res.json();
  return users;
}

JSON 본문과 함께 POST 사용

method, headers, body를 사용하십시오. 본문은 문자열이어야 하므로 객체에 JSON.stringify()를 호출해야 합니다.

async function createUser(user) {
  const res = await fetch('/api/users', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(user)
  });
  if (!res.ok) throw new Error('Failed: ' + res.status);
  return res.json();
}

createUser({ name: 'Alice', email: 'alice@example.com' });

전체 업데이트에 PUT 사용

PUT은 리소스를 교체합니다. 전체 객체를 보내십시오. 생략한 필드는 일반적으로 서버에서 삭제됩니다.

await fetch(`/api/users/${id}`, {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    id, name: 'Alice', email: 'alice@example.com', role: 'admin'
  })
});

부분 업데이트에 PATCH 사용

PATCH는 보낸 필드만 업데이트합니다. PUT 대신 부분 업데이트에 사용하십시오.

await fetch(`/api/users/${id}`, {
  method: 'PATCH',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ email: 'new@example.com' })
});

DELETE 요청

DELETE에는 일반적으로 본문이 없습니다. 응답으로 본문이 없는 204 No Content를 반환하는 경우가 많습니다.

async function deleteUser(id) {
  const res = await fetch(`/api/users/${id}`, { method: 'DELETE' });
  if (!res.ok) throw new Error('Delete failed');
  // 204 No Content — no JSON to parse
}

인증 머리글

보호된 엔드포인트에는 Authorization 머리글을 첨부하십시오.

const res = await fetch('/api/me', {
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  }
});

URL 쿼리 매개변수

안전한 인코딩을 위해 URLSearchParams로 쿼리 문자열을 구성하십시오.

const params = new URLSearchParams({
  q: 'react hooks',
  page: '2',
  pageSize: '20'
});

const res = await fetch(`/api/search?${params}`);
// /api/search?q=react+hooks&page=2&pageSize=20

fetch가 HTTP 오류를 발생시키지 않는 이유

fetch는 네트워크 실패가 발생한 경우에만 거부합니다. 404 또는 500 응답도 성공적으로 이행됩니다. 항상 res.ok(2xx일 때 true) 또는 res.status를 확인한 뒤 수동으로 오류를 발생시키십시오.

const res = await fetch('/api/users/999');
if (!res.ok) {
  // res.ok is false for 4xx and 5xx
  throw new Error(`Server error ${res.status}: ${await res.text()}`);
}

취소를 위한 AbortController

진행 중인 요청을 취소하여 오래된 결과가 표시되지 않도록 하십시오. 입력 중 검색과 React 효과 정리에 필수적입니다.

const controller = new AbortController();

fetch('/api/search?q=hooks', { signal: controller.signal })
  .then(res => res.json())
  .catch(err => {
    if (err.name !== 'AbortError') throw err;
  });

// Cancel:
controller.abort();

FormData 전송

파일 업로드나 multipart form의 경우 FormData 객체를 본문으로 전달하십시오. Content-Type은 설정하지 마십시오. 브라우저가 올바른 경계 문자열과 함께 자동으로 추가합니다.

const form = new FormData();
form.append('avatar', fileInput.files[0]);
form.append('name', 'Alice');

await fetch('/api/upload', { method: 'POST', body: form });
// no Content-Type header — browser sets multipart/form-data

빠른 확인

서버가 404 또는 500을 반환할 때 fetch()가 오류를 발생시키지 않는 이유는 무엇입니까?

복습: Fetch API

fetch()는 Response의 Promise를 반환합니다. 메서드는 GET(기본값), POST, PUT, PATCH, DELETE입니다. JSON 본문에는 JSON.stringify()와 Content-Type 머리글이 필요합니다. fetch는 네트워크 실패가 발생한 경우에만 거부하므로 res.ok를 수동으로 확인해야 합니다. 쿼리 문자열에는 URLSearchParams를 사용합니다. 취소에는 AbortController를 사용합니다. 파일 업로드에는 FormData를 사용하며 Content-Type은 설정하지 않습니다. 브라우저가 처리합니다.

자주 묻는 질문

“Fetch API: GET, POST, PUT, DELETE” 강의는 무료인가요?

네 — “Fetch API: GET, POST, PUT, DELETE” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Frontend Academy 강의 전체를 잠금 해제할 수 있습니다. Frontend Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Fetch API: GET, POST, PUT, DELETE”에서 뭘 배우나요?

fetch로 GET 요청을 보내고, POST 및 PUT 요청에 JSON 본문을 전송하며, 리소스를 삭제하기 위해 DELETE 엔드포인트를 호출합니다. 브라우저에서 직접 실행하는 실습 코드로 Frontend Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Frontend Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Frontend Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Fetch API: GET, POST, PUT, DELETE” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Frontend Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Frontend Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Fetch API: GET, POST, PUT, DELETE
  2. Axios: 인터셉터와 기본 URL
  3. 오류 처리: HTTP 상태 코드
  4. 데이터 캐싱을 위한 SWR 및 React Query
← Frontend Academy(으)로 돌아가기