OSS探訪GitHubでログイン

Node・browser・workerで同じAPIを使い、fetchへJSON解析・retry・timeout・interceptorを加える

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
5,360
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/10/04
ページ内ナビ

概要

ofetchは、標準Fetch APIを土台にNode.js・browser・workerで使えるHTTP clientです。JSON responseの自動解析、JSON body、non-2xx error、retry、timeout、baseURL、query parameter、interceptorを一つのAPIで扱えます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

JSONやbinary responseを用途に応じて解析する

stable v1ではJSONやnative valueをdestrで解析し、binary responseはBlobとして扱います。必要に応じてtext、blob、arrayBuffer、streamなどresponse typeを明示できます。

出典:[1]

JSON bodyとHTTP error handlingを簡潔にする

objectをbodyへ渡すとJSONへ変換し、POST・PUT・PATCHでは適切なcontent-typeとaccept headerを設定します。non-2xx responseはFetchErrorとして扱われ、解析済みerror bodyをerror.dataから参照できます。

出典:[1]

retry・timeout・baseURL・interceptorを共通化する

retry回数やdelay、timeout、baseURL、query parameterをoptionで指定でき、onRequestやonResponseなどのinterceptorで共通処理を挟めます。ofetch.createを使えばdefault optionを持つclientも作れます。

出典:[1]

向いている用途

同じfetch wrapperをfrontend・SSR・workerで共有したい場合に向く

browserだけでなくNode.jsやworkerでも同じAPIを使えるため、universal application、SSR、edge runtimeなどでHTTP処理を共通化したいprojectに適します。

出典:[1]

導入前の確認

副作用を持つmethodのretry設定は明示的に判断する

stable v1はGET等で自動retryを提供しますが、POST・PUT・PATCH・DELETEは副作用を避けるため既定ではretryしません。custom retryを指定するとこれらもretry対象になり得るため、APIのidempotencyを確認して設定してください。

出典:[1]

stable 1.5.1とv2 alphaのdocumentationを混同しない

GitHubのmainはv2 alpha開発lineで、stable 1.xとはpackage metadataやREADMEの前提が異なります。stable 1.5.1を採用する場合はv1 documentationと1.5.1 release noteを基準にしてください。1.5.1ではonRequest hook後のheaders正規化が修正されています。

出典:[1][2]

参考にした公式資料

  1. [1]ofetch stable v1 README(2026-10-05)
  2. [2]ofetch v1.5.1 release(2026-10-05)
  3. [3]ofetch MIT license on stable v1(2026-10-05)
編集部からの補足

stable利用では1.x系を明示しておくのが安全です。現在のmainはv2 alpha開発lineなので、READMEやpackage metadataを確認するときはstable v1 documentationと混同しないでください。1.5.1はonRequest後のheaders正規化を修正したpatch releaseです。

3ステップで試す

  1. 1

    stable ofetch 1.5.1を一時projectへ導入する

    v2 alphaではなくstable 1.xを試すため、1.5.1を明示して導入します。

    demo=$(mktemp -d "${TMPDIR:-/tmp}/ofetch.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact ofetch@1.5.1
  2. 2

    local HTTP serverへofetchする確認scriptを作る

    外部serviceに依存せず、READMEにあるJSON response自動解析をlocal serverで確認します。

    printf "%s\n" "import {createServer} from 'node:http';" "import {ofetch} from 'ofetch';" "const server = createServer((request, response) => { response.setHeader('content-type', 'application/json'); response.end(JSON.stringify({ok: true})); });" "server.listen(0, '127.0.0.1', async () => {" " const address = server.address();" " try {" " const data = await ofetch('http://127.0.0.1:' + address.port + '/');" " if (data.ok !== true) process.exitCode = 1;" " console.log(data);" " } finally { server.close(); }" "});" > demo.mjs
  3. 3

    Node.jsでrequestを実行する

    ofetchがHTTP responseを取得し、JSONをobjectへ解析して返すことを確認します。

    node demo.mjs
公式READMEで確認

成長

成長の推移 · 直近30日

5,360 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
78

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
5,360
Forks
197
Watchers
14
Open Issues
52
Contributors
65
所有者種別
Organization
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/10/04

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?