ofetch
Pooya Parsa (pi0)氏により、UnJSの下、開発されているデータ・フェッチング ライブラリです。
WEB標準のAPIであるfetchを自然な形で拡張していて、fetchを理解していれば理解が容易で、fetchからの乗り換えも簡単です。
Axios / Ky etc、データ・フェッチング・ライブラリの多くが、fetchとは異なる構文となっています。(Axios / Kyは似た感じですが、独自構文の採用が...。)
実装
fetchを利用する形で実装されています。
豊富な採用実績
Nuxtでv3.0.0から採用(ビルトイン)されている採用実績の豊富なデータ・フェッチング ライブラリです。
Nuxt3以降にあるビルトイン関数 useAsyncData/useFetch/useLazyFetch がofetchを利用していて、
Nuxt3以降のデータ・フェッチングの基盤となっています。
フレームワーク非依存
fetchにデータ・フェッチングの観点で最低限?必要な拡張のみを行っています。
単体での完結を意図したライブラリではなく、ライブラリ/フレームワークから利用されることを想定し(設計され)ています。
「大規模かつ長期間に亘り運用できる安全なコードを書けること」はofetchが担保すべきモノではなく、ofetchの利用側(ライブラリ etc)が担保すべきモノ、という設計です。
それを考慮している利用側がの一つがNuxt3以降ビルトインの useFetch/useAsyncData です。
詳細
v2
現在、開発途上で、αステージです。
v1は destr / node-fetch-native / ufo に依存していますが、v2では、内部実装の見直しにより、これらのライブラリへの依存が取り除かれ、スリムになる予定です。
node-fetch-native
Node.js環境におけるfetchの互換性を最適化するためのラッパーライブラリです。
自動的なネイティブ優先:
実行環境のNode.jsバージョンを確認し、ネイティブのfetch(Node.js v18以降)が利用可能な場合はそれを使用し、利用できない場合はポリフィル(node-fetch)へフォールバックします 。
プロキシ対応:
ネイティブのfetchでは標準で対応しにくいHTTPプロキシのサポートを、シンプルなAPIで追加できるように設計されています 。
ランタイム非依存:
Node.jsだけでなく、Bun / Deno / Edgeランタイム(Cloudflare Workers etc)でも動作するよう設計されており、ライブラリ開発者が環境を気にせずfetchを扱えるようにしています。
UnJS