Repolode
L-Blondy

L-Blondy/up-fetch

ネイティブの fetch にスキーマ検証、型付きレスポンス、リトライ、タイムアウト、進捗追跡を追加する TypeScript 製 fetch クライアントビルダー。

スター
1,409
フォーク
22
未解決の Issue
2
最終コミット
2 か月前

これは何?

upfetch はネイティブの fetch API をラップする fetch クライアントビルダーです。baseUrl、headers、timeout、リトライ設定などのデフォルトオプションを指定してインスタンスを作成し、fetch と同じように呼び出せます。リクエストのパラメーターやボディにはプレーンオブジェクトを渡せ、JSON レスポンスは自動的にパースされます。

このライブラリは、zod、valibot、arktype を含む Standard Schema 仕様に準拠した任意のスキーマを受け付けます。スキーマを渡すと、レスポンスが検証され、推論された型で返されます。不一致の場合は ResponseValidationError がスローされます。成功以外のレスポンスに対するエラーは、デフォルトでは ResponseError としてスローされます。reject と parseRejected はどちらもカスタマイズできます。

さらに、試行回数・遅延・条件を設定できるリトライ、リクエストごとのタイムアウト、ライフサイクルフック、アップロードとダウンロードの進捗通知、ストリーミングコールバックも利用できます。パッケージは npm で up-fetch として公開されており、ブラウザー、Node.js、Bun、Deno、Cloudflare Workers、Vercel Edge Runtime で動作します。

主な機能

  • 01zod、valibot、arktype など、Standard Schema に準拠するライブラリを使った検証
  • 02クエリパラメーターやリクエストボディにプレーンオブジェクトを使え、自動で JSON にシリアライズ
  • 03試行回数・遅延・リトライ条件を設定できるリトライ
  • 04リクエストごとのタイムアウトとデフォルトのタイムアウト
  • 05アップロードとダウンロードの進捗通知、およびストリーミングコールバック
  • 06リクエスト、レスポンス、成功、エラー、リトライに対応するライフサイクルフック

ユースケース

  • 実行時のレスポンス検証に対応した、TypeScript フロントエンド向けの型付き API クライアントを構築する
  • 信頼性の低いサードパーティ API への呼び出しにリトライとタイムアウトを追加する
  • Web アプリでアップロードまたはダウンロードの進捗バーを表示する
  • AI チャットの出力など、ストリーミングレスポンスを利用する

クイックスタート

  1. 1

    npmからパッケージをインストールする

    npm i up-fetch
  2. 2

    ネイティブのfetchをラップするupfetchインスタンスを作成する

  3. 3

    必要に応じてスキーマ検証を行い、リクエストを送信する

使う前に知っておきたいこと

  • スキーマ検証には、zodやvalibotなどの別ライブラリが必要です。

トピック

よくある質問

up-fetch とは?
ネイティブの fetch にスキーマ検証、型付きレスポンス、リトライ、タイムアウト、進捗追跡を追加する TypeScript 製 fetch クライアントビルダー。 upfetch はネイティブの fetch API をラップする fetch クライアントビルダーです。baseUrl、headers、timeout、リトライ設定などのデフォルトオプションを指定してインスタンスを作成し、fetch と同じように呼び出せます。リクエストのパラメーターやボディにはプレーンオブジェクトを渡せ、JSON レスポンスは自動的にパースされます。
up-fetch は無料で使えますか?ライセンスは?
up-fetch は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
up-fetch は今もメンテナンスされていますか?
半年以内に更新あり。up-fetch の最終コミットは 2026年9月1日 です。
up-fetch は何に使えますか?
実行時のレスポンス検証に対応した、TypeScript フロントエンド向けの型付き API クライアントを構築する 信頼性の低いサードパーティ API への呼び出しにリトライとタイムアウトを追加する Web アプリでアップロードまたはダウンロードの進捗バーを表示する AI チャットの出力など、ストリーミングレスポンスを利用する
up-fetch のインストール方法は?
npmからパッケージをインストールする: npm i up-fetch ネイティブのfetchをラップするupfetchインスタンスを作成する 必要に応じてスキーマ検証を行い、リクエストを送信する
up-fetch はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/L-Blondy/up-fetch

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト