프로젝트 소개
Ky는 Fetch API 위에 구축된 작고 우아한 JavaScript HTTP 클라이언트입니다. 최신 브라우저, Node.js, Bun, Deno를 대상으로 하며, 의존성이 없는 작은 패키지로 제공됩니다. npm(`npm install ky`)을 통해 설치하거나 jsdelivr, unpkg, esm.sh와 같은 CDN에서 로드할 수 있으며, Deno에서는 URL에서 직접 가져올 수 있습니다.
일반 `fetch`와 비교하여 Ky는 메서드 단축키(`ky.get()`, `ky.post()`, `ky.put()`, `ky.patch()`, `ky.head()`, `ky.delete()`, `ky.query()`)를 제공하는 더 간단한 API를 제공하며, 리디렉션 후 2xx가 아닌 상태 코드를 오류로 처리하고, 편리한 본문 메서드(`.json()`, `.text()`, `.formData()`, `.arrayBuffer()`, `.blob()`, 그리고 런타임이 지원하는 경우 `.bytes()`)로 확장된 Response를 반환합니다. `json` 옵션은 페이로드를 문자열화하고 Content-Type 헤더를 설정하며, `searchParams`는 쿼리 매개변수를 요청 URL에 병합합니다.
요청은 상대 URL을 해결하기 위한 `baseUrl` 또는 `prefix`, 시도당 `timeout`(기본값 10000ms)과 재시도를 포함한 전체 작업을 포괄하는 선택적 `totalTimeout`, 압축 해제된 응답 본문 바이트를 제한하는 `maxResponseSize`로 구성할 수 있습니다. 자동 재시도는 매우 구성 가능합니다: 재시도 제한, 적용 가능한 메서드 및 상태 코드, `backoffLimit`을 사용한 지수 백오프, 사용자 정의 `delay` 함수, thundering-herd 효과를 방지하는 `jitter`, `Retry-After` 및 속도 제한 타이밍 헤더 준수, `retryOnTimeout`, 완전히 사용자 정의된 재시도 결정을 위한 `shouldRetry` 콜백.
수명 주기 훅(`init`, `beforeRequest`, `beforeRetry`, `beforeError`, `afterResponse`)은 요청 수명 주기 동안 옵션, 요청 및 응답을 수정할 수 있게 합니다. 예를 들어 인증 헤더 첨부, URL 재작성, 또는 `beforeRequest` 훅에서 Response를 반환하여 응답을 모의 처리하는 등이 가능합니다. `ky.extend()`는 사용자 정의 기본값으로 인스턴스를 생성하여 API별 클라이언트를 구축하는 데 유용합니다.
TypeScript 지원에는 `.json()`에 대한 제네릭(기본값은 `any` 대신 `unknown`)이 포함되며, 응답 본문은 Zod와 같은 Standard Schema 호환 검증기로 검증할 수 있으며, 검증 실패 시 `SchemaValidationError`를 발생시킵니다. 업로드 및 다운로드 진행률 지원도 일반 fetch에 비해 이점 중 하나로 나열됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.