AxiosとFormDataの違い、メリット・デメリット、そして実践的な使い方
更新日:2025/03/30

Webアプリケーション開発で、APIリクエストで「Axios」と「FormData」を使用することがあるかと思います、それぞれの役割をしっかり理解できるようまとめました!
Axiosとは?
Axiosは、ブラウザとNode.js環境の両方で使える人気のHTTPクライアントライブラリです。Promise APIを採用しており、モダンなJavaScript開発において欠かせないツールとなっています。
Axiosのメリット
- 使いやすいAPI設計: シンプルで直感的なAPIを提供しています
- Promiseベース: 非同期処理が簡潔に書けます
- 自動変換機能: JSONデータの自動変換をサポート
- リクエスト/レスポンスのインターセプト: 通信処理をカスタマイズできます
- タイムアウト設定: リクエストのタイムアウトを設定可能
- ブラウザ/Node.js互換: どちらの環境でも同じコードで動作します
- エラーハンドリング: 統一されたエラー処理方法を提供
Axiosのデメリット
- 外部依存性: プロジェクトに依存関係が追加されます
- 学習コスト: 基本的なfetchよりは学ぶことが多いです
- ファイルサイズ: 組み込む場合はバンドルサイズに影響します
- 低レベル操作: 一部の高度なHTTP操作では柔軟性に欠けることがあります
FormDataとは?
FormDataはウェブブラウザに組み込まれているAPIで、HTMLフォームのデータを簡単に構築・送信するためのオブジェクトです。
特にファイルアップロードなどのマルチパートフォームデータを扱う際に重宝します。
FormDataのメリット
- ファイル送信の容易さ: ファイルアップロードが簡単に実装できます
- マルチパートサポート: multipart/form-dataを自動的に処理します
- 動的なデータ構築: キーと値のペアを動的に追加/削除できます
- ブラウザ互換性: ほとんどのモダンブラウザでサポートされています
- Content-Type自動設定: 適切なヘッダーを自動的に設定します
FormDataのデメリット
- Node.js非互換(標準): Node.jsでは標準で利用できません(ライブラリ必要)
- JSONとの相性: JSON形式との相互変換が直接できません
- 複雑なデータ構造: ネストされたオブジェクトの扱いが不便です
- データ検証機能なし: バリデーション機能を別途実装する必要があります
- データの可視性: 内部データの確認が難しい場合があります
Node.jsでの使用
Node.jsとAxios
インストール
npm install axios
基本的な使用方法
const axios = require('axios');
// または ES modules を使用する場合
// import axios from 'axios';
async function getUsers() {
try {
const response = await axios.get('https://api.example.com/users');
console.log(response.data);
} catch (error) {
console.error('エラー:', error);
}
}
getUsers();
Node.jsとFormData
Node.jsでFormDataを使用するには、追加のライブラリが必要です。
「form-data」というパッケージを使います
npm install form-data
基本的な使用方法
const FormData = require('form-data');
const fs = require('fs');
const axios = require('axios');
async function uploadFile() {
const form = new FormData();
// テキストデータを追加
form.append('name', 'ファイル名');
// ファイルを追加
form.append('file', fs.createReadStream('/path/to/file.pdf'));
try {
const response = await axios.post('https://api.example.com/upload', form, {
headers: {
...form.getHeaders()
}
});
console.log('アップロード成功:', response.data);
} catch (error) {
console.error('アップロードエラー:', error);
}
}
uploadFile();

-
検索
(例) debug search etc.. -
カテゴリー
-
mixhostでのWordPress利用について
更新日:2024/04/02
299 view
-
scrollHint
更新日:2024/03/13
250 view
-
XML Sitemap Generator for Google不具合のダウングレード対応、代替プラグイン
更新日:2024/06/13
236 view
-
【SnowMonkey】納品までのフローまとめ
更新日:2025/02/15
163 view
-
ワードプレスでフォントを変えたいとき、プラグインを使えば初心者でも簡単
更新日:2025/02/16
144 view
-
【Googleサーチコンソール】検索画面で表示させたくない「Googleのインデックス削除」
更新日:2024/06/07
130 view
-
【ショートコード】編集画面で任意の場所にHTMLファイルを挿入
更新日:2024/01/26
122 view
-
キーワード検索で上位表示させる方法【SEO】
更新日:2023/10/28
120 view
-
tailwindcss使い方
更新日:2024/03/13
120 view
-
Recline: GitHub Copilotで動作するClaude 3.5 Sonnet搭載の開発支援ツール
更新日:2025/01/20
110 view
-
WordPressプラグイン「All-in-One WP Migration」のトラブル
更新日:2022/03/31
84 view
-
ワードプレスセキュリティー対策まとめ【2025年】「site guard wordpress」「BackWPup バージョン5でUI変更!?」
更新日:2025/02/25
76 view
-
SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/13
47 view
-
VSCodeで開発効率を劇的に向上させる!Roo-Clineプラグイン完全ガイド【Gemini API】
更新日:2025/02/08
42 view
-
Express、FastAPIを使用し、二重fetch構成のメリット
更新日:2025/03/28
41 view
-
「JSONスキーマ」と「Few-shot Learning」で実現する次世代生成AIソフトウェア開発の可能性
更新日:2025/02/12
40 view
-
WordPressの無料画像素材のおすすめダウンロードサイト!
更新日:2022/02/22
35 view
-
リファクタリング【VSCode Javasctipt Python】
更新日:2025/03/09
35 view
-
形態素解析とは?初心者でもわかるツールの使い方と実践例
更新日:2025/02/08
33 view
-
【Next.js AWS】音声文字起こし&要約、分析アプリケーション(S3)(Transcribe)(Amazon Bedrock)
更新日:2025/02/13
30 view