HTTP通信をラクに実装できる「axios」の基本

最近、HTTP通信にaxiosを使う機会があったので、基本的な使い方からエラー処理などまで、備忘録として基本的な部分をまとめておきます。
axios
まずaxiosは「アクシオス」と読み、もともとギリシャ語で「値する」という意味らしいです。
PromiseベースのHTTPクライアントで、非同期なHTTP通信が簡単に実装できます。
また、Vue.jsでは非同期通信にaxiosを使うことがスタンダードになっています。
インストール方法
npmを使ってインストールする場合は下記。
$ npm install axios --saveyarnの場合は下記コマンド。
$ yarn add axiosCDNを利用する場合のタグを追加します。
<script src="https://unpkg.com/axios/dist/axios.min.js"><script>基本の使い方
GET通信
GET通信をしたいときはaxios.get()を使用します。
第1引数にURLを指定し、通信の結果によってそこから分岐します。
- .then():通信が成功したときの処理
- .catch():エラー時の処理
- .finally():通信が成功しても失敗しても行う処理
axios.get('URL')
.then(function (response) {
// 通信が成功したときの処理
console.log(response);
})
.catch(function (error) {
// エラー時の処理
console.log(error);
})
.finally(function () {
// 常に実行する処理
});レスポンスは下記になります。
response.dataにデータが入っているので、そこさえ覚えておけばOKです。
| レスポンス | 中身 |
|---|---|
| response.data | レスポンスデータ |
| response.status | ステータスコード |
| response.statusText | ステータステキスト |
| response.header | レスポンスヘッダ |
| response.config | コンフィグ |
POST通信
POST通信をしたいときはaxios.post()を使用します。
第1引数にURLを指定し、第2引数に送信したいデータを指定します。
axios.post('/user', {
id: 1,
name: 'user_name'
})
.then(function (response) {
// 通信が成功したときの処理
console.log(response.data);
})
.catch(function (error) {
// エラー時の処理
console.log(error);
})
.finally(function () {
// 常に実行する処理
});axios APIの使用
axios()で様々なオプションを指定することで、カスタムヘッダーの送信やTokenの送信、ベーシック認証のかかったページへの通信も可能です。
GET通信の基本の形が下記になります。
axios({
method: 'get',
url: 'GETするURL',
})POST通信の場合は下記になります。
axios({
method: 'post',
url: 'POSTするURL',
data: {
id: 1,
name: 'user_name'
}
});カスタムヘッダーの送信
カスタムヘッダーの追加は「headers」で行えます。
axios({
method: 'post',
url: 'POSTするURL',
headers: {
// ここにカスタムヘッダーの内容を追加
},
})ベーシック認証のかかったページへの通信
ベーシック認証のかかったページへの通信を行いたい場合は「auth」内の「username」と「password」にユーザー名とパスワードを入力するだけです。
axios({
method: 'get',
url: 'GETするURL',
auth: {
username : 'user',
password : 'pass'
},
})fetchなどでベーシック認証をしようとすると、btoaを使ってユーザー名とパスワードを「:」で区切った文字列を変換しないといけなかったりします。
それと比べると分かりやすくてラクですね。

iTerm2で起動時に左上に表示される「Tip of the Day(今日のTip)」を非表示にする方法
WordPressのプラグインはどれを入れたら良い?とりあえず最初に導入をオススメするプラグイン一覧
手軽にコーディングの勉強ができるCodePenをもっと便利に使うための設定
Visual Studio Codeの設定を複数の端末間で同期する「Settings Sync」機能の使い方
Vue CLIのプロジェクト管理用のGUI機能から環境を構築する
Visual Studio CodeをMarkdownエディターとして使用する
Local by Flywheelのページ遷移を軽くする設定
gulpでSSI(サーバーサイドインクルード)を使用する「connect-ssi」
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Eagleで実現するクリエイティブ素材の簡単管理
かゆいところに手が届く「Supercharge」でMac環境を便利にカスタマイズする