Vue プロジェクトで axios をカプセル化する方法 (http リクエストの統合管理)

Vue プロジェクトで axios をカプセル化する方法 (http リクエストの統合管理)

1. 要件

Vue.js フレームワークを使用してフロントエンド プロジェクトを開発する場合、サーバー インターフェイスへの Ajax リクエストが頻繁に送信されます。開発プロセスでは、プロジェクトでの使用を容易にするために、axios をさらにカプセル化する必要があります。

2. Vueプロジェクト構造

次のディレクトリ構造で Vue プロジェクトをローカルに作成します。

- パブリック静的リソースファイル
-ソース
|- アセットの静的リソースディレクトリ
|- コンポーネント パブリック コンポーネント ディレクトリ
|- http axios パッケージ ディレクトリ
|- ルータールーティング管理ディレクトリ
|- 状態管理ディレクトリを保存する
|- ビュー コンポーネント ディレクトリを表示
|- App.vue ルートコンポーネント
|- main.js エントリ ファイル
- package.json npm 設定ファイル

Vueプロジェクトにaxiosの管理ディレクトリとしてhttpディレクトリを作成します。httpディレクトリには2つのファイルがあります。

  • axiosメソッドをカプセル化する/http/index.jsファイル
  • /http/api.js 統合管理インターフェースファイル

3. コード例

/http/api.js ファイルのコードは次のとおりです。

エクスポートデフォルト{
    'users_add': '/users/add',
    'users_find': '/users/find',
    'users_update': '/users/update',
    'users_delete': '/users/delete'
}

/http/index.js ファイルのコードは次のとおりです。

'axios' から axios をインポートします
'./api' から api をインポートします

//axiosインスタンスオブジェクトを作成するlet instance = axios.create({
    baseURL: 'http://localhost:3000', //サーバーアドレス タイムアウト: 5000 //デフォルトのタイムアウト期間})

//リクエストインターセプターinstance.interceptors.request.use(config=>{
    //ここでリクエストインターセプトのコードを記述します。これは通常、読み込みウィンドウをポップアップするために使用されます。console.log('Requesting...')
    設定を返す
},エラー=>{
    console.error('リクエストが失敗しました',err)
})

//レスポンスインターセプターinstance.interceptors.response.use(res=>{
    //ここで応答データを処理します console.log('リクエストが成功しました!')
    return res //返されたオブジェクトはリクエストメソッドのレスポンスオブジェクトに渡されます},err=>{
    // 応答エラー処理 console.log('応答に失敗しました!', err)
    // Promise.reject(err) を返します。
})

//axios リクエスト メソッドをカプセル化します。パラメーターは構成オブジェクトです //option = {method,url,params} method はリクエスト メソッド、url はリクエスト インターフェイス、params はリクエスト パラメーターです async function http(option = {}) {
    結果 = null とする
    if(option.method === 'get' || option.method === 'delete'){
     // 取得および削除リクエストを処理する await instance[option.method](
                api[オプション.url],
                {パラメータ: オプション.パラメータ}
          ).then(res=>{
            結果 = res.data
        }).catch(エラー=>{
            結果 = エラー
        })
    }それ以外の場合(option.method === 'post' || option.method === 'put'){
     //POSTおよびPUTリクエストを処理する await instance[option.method](
                api[オプション.url],
                オプション.パラメータ
            ).then(res=>{
            結果 = res.data
        }).catch(エラー=>{
            結果 = エラー
        })
    }

    結果を返す
}

デフォルトのhttpをエクスポート

カプセル化された /http/index.js ファイルを main.js エントリ ファイルにインポートします。サンプル コードは次のとおりです。

'vue' から Vue をインポートします
'./App.vue' からアプリをインポートします。
'./router' からルーターをインポートします
'./store' からストアをインポートします
'./http' から http をインポートします

Vue.config.productionTip = false
Vue.prototype.$http = http

Vue.use(Elementui)

新しいVue({
  ルーター、
  店、
  レンダリング: h => h(App)
}).$mount('#app')

App.vue ルート コンポーネントで axios リクエストをテストします。サンプル コードは次のとおりです。

<テンプレート>
  <div>
    <button @click="getDate">リクエストを送信</el-button>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  メソッド: {
    日付を取得する(){
      this.$http({
        メソッド: 'get'、
        url: 'users_find'
      }).then(res=>{
        コンソール.log(res)
      })

    }
  }
}
</スクリプト>

ここには http://localhost:3000/users/find インターフェースが必要です。そうでないと、リクエストは失敗します。

4. 効果の実証

Vue プロジェクトを起動し、ブラウザで Vue プロジェクトのアドレスにアクセスします。私のアドレスは http://localhost:8080 です。ボタンをクリックしてリクエストを送信します。結果は下の図のようになります。

この時点で、Vue プロジェクトで単純な axios カプセル化が完了しました。実際のニーズに応じて axios をカプセル化することもできます。この記事は参考用です。

Vue プロジェクトで axios (http リクエストの統合管理) をカプセル化する方法についてはこれで終わりです。Vue カプセル化 axios 管理 http リクエストに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • axiosリクエストをvueでカプセル化する方法
  • axios リクエストのカプセル化に基づく Vue アプリケーションのサンプルコード
  • Vue3+TypeScriptはaxiosをカプセル化し、リクエスト呼び出しを実装します
  • Vue+axiosはリクエストをカプセル化してフロントエンドとバックエンドを分離します
  • Vue が Axios リクエストとインターセプターをカプセル化する手順
  • Axios を使用して Vue プロジェクトで http リクエストをカプセル化する方法
  • Vue axios 繰り返しクリックで最後のリクエストをキャンセルするカプセル化メソッド
  • Vue プロジェクトでの axios のカプセル化リクエスト

<<:  MySQL の InnoDB ストレージ ファイルの詳細な説明

>>:  Linux の EXT シリーズファイルシステムフォーマットの詳細な説明

推薦する

Vue の状態管理: Vuex の代わりに Pinia を使用する

目次1. ピニアとは何ですか? 2. Piniaは使いやすい3. ユーザーエクスペリエンス1. ピニ...

VUE + OPENLAYERSがリアルタイムポジショニング機能を実現

目次序文1. ラベルスタイルを定義する2. GeoJSONデータのシミュレーション3. Vercto...

jQuery キャンバスで画像検証コード例を描画する

この記事では、jQuery Canvasの描画画像検証コードの具体的なコードを例として紹介します。具...

Vue プロジェクトのパッケージ化と最適化の実装手順

目次Vueプロジェクトのパッケージ化、起動、最適化Vueプロジェクトのパッケージ化プロジェクトホステ...

iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

原因と結果1. ansibleコマンドを使用してジャンプサーバー上のマシンBをテストすると、次のエラ...

vue.js でよく使われる v 命令の解析

目次Vue でのモデルバインド表示の if の v-text の説明v-html: v-オンv-if...

CSS3を使用してフォントカラーグラデーションを実装する

Animation.css を使うと公式サイトのフォントがだんだんと変わっていくのが分かりました。c...

HTML+CSS+JavaScript でガールフレンド版のスクラッチ カードを作成します (一度見ればすぐに覚えられます)

誰もがスクラッチ チケットで遊んだことがあると思います。子供の頃、ポケットにお金が入るとすぐに友達に...

単一のMySQLテーブルを復元する手順

休憩中に、眠気を完全に吹き飛ばす電話がかかってきました。「開発者が更新 SQL を書くときに whe...

Linux での screen コマンドの使用方法の詳細な説明

GUNスクリーン:公式サイト: http://www.gnu.org/software/screen...

Vue を使用して CSS トランジションとアニメーションを実装する方法

目次1. トランジションとアニメーションの違い2. Vueを使用して基本的なCSSトランジションとア...

Linux でシステム ディスクを初期化した後にデータ ディスクを再マウントする方法

Linuxインスタンスでシステムディスクを初期化した後、データディスクを再マウントするLinux イ...

Linux の 5 ステップ ビルド カーネル ツリー

目次0. システムに付属するカーネルツリー1. 環境設定最初のステップステップ2 2. ソースコード...

jQueryはすべての選択と逆選択操作ケースを実装します

この記事では、全選択と逆選択操作を実装するためのjQueryの具体的なコードを参考までに共有します。...