Fetch API
Fetch API는 웹 애플리케이션이 네트워크 자원을 요청하고 응답을 처리할 수 있도록 브라우저가 제공하는 인터페이스다. JavaScript에서 fetch()를 호출해 HTTP 요청을 보낼 수 있으며 Promise 기반의 비동기 결과로 Response 객체를 받는다. 문서뿐 아니라 JS...
| 분류 | 브라우저 네트워크 API |
|---|---|
| 주요 용도 | HTTP 기반 자원 요청과 응답 처리 |
| 관련 기술 | World Wide Web, 웹 브라우저, HTTP, JavaScript |
| 주요 명세 | WHATWG Fetch Standard |
Fetch API는 웹 애플리케이션이 네트워크 자원을 요청하고 응답을 처리할 수 있도록 브라우저가 제공하는 인터페이스다. JavaScript에서 fetch()를 호출해 HTTP 요청을 보낼 수 있으며 Promise 기반의 비동기 결과로 Response 객체를 받는다. 문서뿐 아니라 JSON, 이미지, 바이너리와 스트리밍 데이터도 처리할 수 있어 현대 웹 애플리케이션의 기본적인 네트워크 수단으로 사용된다.
Fetch 모델은 Request, Response, Headers 등의 객체를 정의한다. 요청에는 URL과 메서드, 헤더, 본문, 자격 증명 및 캐시 정책 같은 정보가 포함될 수 있다. 응답에는 상태 코드와 헤더, 본문 스트림이 포함되며 response.json() 등의 메서드를 통해 원하는 형식으로 읽는다. HTTP 오류 상태 코드가 반환되었다는 사실만으로 Promise가 네트워크 오류처럼 거부되는 것은 아니다.
브라우저는 요청을 전송할 때 URL 해석과 리디렉션, 캐시, 쿠키, 서비스 워커, 정책 검사 등 여러 처리 단계를 수행한다. 교차 출처 요청은 동일 출처 정책 및 CORS 규칙에 따라 응답의 공개 범위가 달라질 수 있다. 요청 모드와 credentials 설정은 서버가 허용하는 보안 조건과 함께 해석해야 한다.
Fetch는 스트리밍 응답을 다룰 수 있으며 AbortController를 통해 요청을 취소할 수 있다. 큰 데이터를 한꺼번에 메모리에 모으는 대신 청크별로 처리하면 지연과 메모리 사용량을 줄일 수 있다. 요청 본문과 응답 본문은 소비 방식에 제약이 있어 동일한 스트림을 무제한 반복해서 읽을 수 없으며 필요한 경우 복제하거나 별도 버퍼를 사용해야 한다.
Fetch API는 네트워크 처리의 프로그래밍 모델이고 HTTP 자체의 메시지 의미를 새로 정의하는 별개의 프로토콜은 아니다. 보안 모델과 API의 동작은 WHATWG Fetch Standard에서 통합적으로 기술된다. 오류 처리에서는 연결 실패, 요청 취소, CORS 차단, HTTP 응답 상태 및 데이터 파싱 실패를 서로 구분해야 한다.[1]