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を使ってユーザー名とパスワードを「:」で区切った文字列を変換しないといけなかったりします。
それと比べると分かりやすくてラクですね。

思考したり情報整理したい時はMarkdown記法で文章を書き出そう!!Webデザイナーの情報整理術
SafariでFacebookのPage Pluginに「リクエストを処理できませんでした」とダイアログが表示される問題
コーディング時のclass名の省略はどこまでして良いのか?「img / btn / ttl / desc / thumb」
Local by FlywheelでWordPressのローカル開発環境構築のハードルが一気に下がる
WordPressのヘッダーにツールバーが表示されないときは、wp_headやwp_footerが入っているか確認
scpコマンドでターミナル接続先のリモートファイルをローカルにダウンロードする方法
iTerm2で起動時に左上に表示される「Tip of the Day(今日のTip)」を非表示にする方法
JavaScriptのtest関数と正規表現でバリデーションチェックを行う
Google Maps APIを使ってGoogle Mapsをウェブサイトに表示させる方法
ソースコードをハイライトする軽量ライブラリ「Highlight.js」の導入方法と使い方
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Macの音量や輝度を「細かく調節」したり「音量を確認しながら調節」する方法
ウェブサイト上で簡単にWYSIWYGエディタを実装する「TinyMCE」
MacのGoogle日本語入力のキー設定で単語登録のショートカットキーを追加する方法
ウインドウリサイズを素早く行う!BetterTouchToolのウインドウスナップ機能の自分なりのカスタマイズ設定
iStat Menusの「ディスク」アイコン表示と設定
1Passwordの開発者向け機能(SSH Agent / Environments / 1Password CLI / Developer Watchtower)
iPhoneのスクリーンショットをIllustratorにペーストすると、色がおかしくなってしまう現象の解決方法
Vue CLI 3でfaviconの設定をする方法
gulpfile.jsにAutoprefixerのブラウザオプションを書くとエラーがでる場合の修正方法