このプロジェクトについて

Kyは、Fetch APIをベースにした、小型でエレガントなJavaScript HTTPクライアントです。モダンブラウザ、Node.js、Bun、Denoを対象としており、依存関係のない小さなパッケージとして提供されています。npm(`npm install ky`)からインストールするか、jsdelivr、unpkg、esm.shなどのCDNから読み込むことができます。Denoでは、URLから直接インポートできます。 プレーンな`fetch`と比較して、KyはよりシンプルなAPIを提供します。メソッドのショートカット(`ky.get()`、`ky.post()`、`ky.put()`、`ky.patch()`、`ky.head()`、`ky.delete()`、`ky.query()`)を備え、リダイレクト後に2xx以外のステータスコードをエラーとして扱い、便利なボディメソッド(`.json()`、`.text()`、`.formData()`、`.arrayBuffer()`、`.blob()`、およびランタイムがサポートする場合は`.bytes()`)で拡張されたResponseを返します。`json`オプションはペイロードを文字列化しContent-Typeヘッダーを設定し、`searchParams`はクエリパラメータをリクエストURLにマージします。 リクエストは、相対URLを解決するための`baseUrl`または`prefix`、試行ごとの`timeout`(デフォルト10000ミリ秒)に加え、リトライを含む全操作をカバーするオプションの`totalTimeout`、および解凍された応答ボディのバイト数を制限する`maxResponseSize`で設定できます。自動リトライは高度に設定可能です:リトライ制限、適用可能なメソッドとステータスコード、`backoffLimit`を使用した指数バックオフ、カスタム`delay`関数、スラッシング効果を防ぐ`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に対する利点として挙げられています。