웹 API

Fetch(페치)

Fetch는 JavaScript에서 HTTP 요청을 보내고 응답을 읽는 API입니다.

쉬운 설명

AI가 만든 코드에서 fetch("/api/studies")를 보면 서버에 스터디 정보를 요청하는 부분일 수 있어요. 받은 응답의 상태를 확인하고 JSON 같은 본문을 읽어 화면에 사용할 수 있어요. fetch를 호출하는 것과 데이터를 화면에 표시하는 것은 다른 단계예요. 브라우저뿐 아니라 Fetch를 지원하는 서버 실행 환경에서도 사용할 수 있어요.

이런 상황에서 만나요

스터디 목록이 나오지 않아 코드를 살펴보니 fetch가 있다고 해 볼게요. 요청 주소, 응답 상태, 본문 읽기를 나눠 확인하면 어디에서 문제가 생겼는지 찾기 쉬워요.

요청·상태 확인·본문 읽기를 나눠 봐요

설명용 화면
1요청 보내기
const response = await fetch("/api/studies");
2상태 확인
if (!response.ok) {
  throw new Error(`HTTP ${response.status}`);
}
3JSON 본문 읽기
const studies = await response.json();
  1. 1같은 출처의 스터디 목록 주소에 GET 요청을 보내는 예시예요.
  2. 2응답을 받았어도 HTTP 오류 상태인지 확인해요.
  3. 3서버가 JSON을 보냈다는 조건에서 본문을 읽어요. 화면 반영은 다음 작업이에요.
async 함수 안에서 이어지는 설명용 코드입니다. /api/studies가 JSON을 반환한다고 가정하며, 완성된 화면 처리나 오류 안내 코드는 아닙니다.

아래 코드는 async 함수 안에서 사용하는 일부예요. response.ok를 먼저 확인하고 응답이 JSON이라는 조건에서 본문을 읽어요. 실패 메시지를 화면에 보여 주거나 재시도하는 처리는 앱에 맞게 별도로 작성해야 해요.

헷갈리기 쉬운 점

404나 500 응답은 fetch가 자동으로 오류로 처리하나요?

일반적으로 그런 HTTP 응답만으로 fetch의 Promise가 실패하지는 않아요. response.ok나 status를 확인해야 해요. 네트워크 실패와 서버가 보낸 오류 응답, JSON을 읽는 과정의 실패를 나누어 봐요.

브라우저에서 다른 출처의 주소를 요청하면 CORS 정책이 영향을 줄 수 있어요. 이때 no-cors를 붙이면 응답을 마음대로 읽을 수 있다는 식으로 해결하지 않아요. 요청 대상의 허용 설정과 서버 경유가 필요한지 확인해요.

왜 알아야 할까요?

“API가 안 돼요” 대신 요청 주소·상태 코드·응답 본문 중 무엇이 예상과 다른지 전달할 수 있어요. 성공 응답을 받아 놓고도 화면이 비는 문제를 요청 실패와 구분할 수 있어요.

조금 더 자세히

Fetch API는 요청과 응답을 다루는 기능 모음이며 fetch()가 요청을 시작합니다. API는 Application Programming Interface, 프로그램이 기능을 호출하는 인터페이스라는 뜻입니다. Fetch 자체가 REST 설계 방식이나 데이터 형식은 아닙니다.

response.json()은 응답 본문을 JSON으로 읽습니다. 서버가 HTML 오류 페이지나 빈 본문을 반환하면 이 단계에서 실패할 수 있습니다. 큰 응답이나 스트리밍 응답은 본문을 읽는 방식을 다르게 선택할 수 있습니다.

직접 사용할 때 확인해 보세요

  • 실제로 요청한 주소와 메서드를 확인한다
  • HTTP 상태와 네트워크 실패를 구분한다
  • 응답 형식과 화면 반영 코드를 확인한다

관계 지도

Fetch(페치) 중심으로 관련 개념의 정의와 관계를 한눈에 정리했습니다.
Fetch(페치)의 정의와 관련 개념 간 관계를 설명한 계층형 그래프