axios ~サーバーにHTTP通信をする~

インストール

$ yarn add axios

基本的な使い方

  • postリクエスト axios.postの第一引数にエンドポイントURL、第二引数に送信するオブジェクトを渡す。
  • getリクエスト axios.getの引数にエンドポイントURLを渡す。thenでレスポンスを取得する。
 // axiosをインポート
import axios from 'axios'  
 
export default {
    methods: {
        // postリクエスト
        createComment() {
            axios.post('エンドポイントのURL', {
                  送信するデータ
            })
            .then(res => {  // 成功したときの処理
                  console.log(res)
            })
            .catch(err => { // 失敗したときの処理
                  console.error(err)
            })
        },
        // patch, deleteリクエストも同様の書き方

        // getリクエスト
        fetchComment() {
            axios.get('サーバーのURL'
            )
            .then(res => {  // 成功したときの処理 resが受信するデータ
                  this.task = res.data;
            })
            .catch(err => { // 失敗したときの処理
                  console.error(err);
            })
        }
    }
}

すべてのリクエストに共通の設定を行う

設定ファイル(plugins/axios.js)でaxios.createでaxiosインスタンスを生成し、共通の設定を行う

// axiosインスタンスの生成例
const instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
})

設定例

import axios from 'axios'

const axiosInstance = axios.create({
  baseURL: 'api'   // すべてのリクエスト先が'api/xxx'になる
})

// 特定条件での設定
// インスタンス生成後に設定を追加する
if (localStorage.token) {
  axiosInstance.defaults.headers.common['Authorization'] = `Bearer ${localStorage.token}`
}
export default axiosInstance

設定ファイルの読み込み

import axios from '../plugins/axios.js'

export default {
     ...
            axios.post( ...