「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavascriptにおけるAxiosとFetchの違い

JavascriptにおけるAxiosとFetchの違い

2024 年 11 月 1 日に公開
ブラウズ:920

Difference Between Axios & Fetch in Javascript

JavaScript では、HTTP リクエストの作成に Axios とネイティブ Fetch API の両方が使用されますが、機能、使いやすさ、機能の点でいくつかの違いがあります。内訳は次のとおりです:

1. 使いやすさ:

  • アクシオス:

    Axios は、リクエストの作成と応答の処理を簡素化します。 JSON 応答が自動的に解析されるため、作業が容易になります。

     axios.get('/api/user')
       .then(response => console.log(response.data))
       .catch(error => console.error(error));
    
  • フェッチ:

    フェッチでは、JSON 解析を明示的に処理する必要があり、追加の手順が追加されます。

     fetch('/api/user')
       .then(response => response.json())
       .then(data => console.log(data))
       .catch(error => console.error(error));
    

2. 応答処理:

  • アクシオス: Axios は自動的に応答を解決し、応答ステータスが 2xx の範囲外の場合はエラーをスローするため、.catch() ブロックでエラーを直接処理できます。
  • フェッチ:

    フェッチでは、2xx 以外のステータス コード (404 や 500 など) はエラーとして扱われません。応答ステータスを手動で確認し、必要に応じてエラーをスローする必要があります。

     fetch('/api/user')
       .then(response => {
         if (!response.ok) throw new Error('Network response was not ok');
         return response.json();
       })
       .then(data => console.log(data))
       .catch(error => console.error(error));
    

3. リクエストとレスポンスのインターセプト:

  • アクシオス:

    Axios には組み込みのインターセプタが用意されており、リクエストを変更したり、レスポンスをグローバルに処理したりすることができます。これは、認証トークンの追加やロギングなどに役立ちます。

     axios.interceptors.request.use(config => {
       config.headers['Authorization'] = 'Bearer token';
       return config;
     });
    
  • フェッチ:

    Fetch には組み込みインターセプターがないため、この動作が必要な場合はフェッチ呼び出しをカスタム関数で手動でラップする必要があります。

4. ブラウザの互換性:

  • アクシオス: Axios は古いブラウザ (IE 11 以前) で動作し、内部でポリフィルを処理します。
  • フェッチ: Fetch API は Internet Explorer ではサポートされていません。古いブラウザでサポートするには、whatwg-fetch のようなポリフィルが必要になる場合があります。

5. データ処理:

  • アクシオス:

    Axios は、POST リクエストを行うときにデータを自動的に文字列化し、Content-Type を application/json に設定します。 FormData などの他の形式でのデータの送信も簡単にサポートします。

     axios.post('/api/user', { name: 'John' });
    
  • フェッチ:

    フェッチでは、データを手動で文字列化し、POST リクエストのヘッダーを設定する必要があります。

     fetch('/api/user', {
       method: 'POST',
       headers: { 'Content-Type': 'application/json' },
       body: JSON.stringify({ name: 'John' })
     });
    

6. リクエストのキャンセル:

  • アクシオス:

    Axios には、CancelToken.
    を使用してリクエストをキャンセルするためのサポートが組み込まれています。

     const source = axios.CancelToken.source();
     axios.get('/api/user', { cancelToken: source.token });
     source.cancel('Request canceled.');
    
  • フェッチ:

    フェッチでは、AbortController を使用してリクエストをキャンセルする必要がありますが、これは少し複雑になる可能性があります。

     const controller = new AbortController();
     fetch('/api/user', { signal: controller.signal });
     controller.abort();
    

7. エラー処理:

  • アクシオス: Axios は、2xx 以外の応答に対して自動的にエラーをスローし、エラー処理はより一貫性があり、集中化されます。
  • フェッチ: フェッチでは、HTTP エラー ステータス コードではなく、ネットワーク エラーの Promise のみが拒否されるため、より手動のエラー処理が必要になります。

結論:

  • Axios は機能が豊富で使いやすく、リクエストを処理するためのより優れた抽象化を提供します。
  • Fetch は最新のネイティブ API であり、必要な依存関係は少なくなりますが、エラー、インターセプター、データ処理などの特定の機能を処理するにはより多くの手動作業が必要です。

リクエストをより細かく制御したい場合は、フェッチを使用することをお勧めします。 HTTP リクエストを簡素化するものが必要な場合は、axios の方が良い選択肢になります。

リリースステートメント この記事は、https://dev.to/pulkitgovrani/difference-between-axios-in-javascript-25od?1に再現されています。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3