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 Element フロントエンドアプリケーション開発 従来の Element インターフェースコンポーネント

目次1. リストインターフェースとその他のモジュールの表示処理2. 従来のインターフェースコンポーネ...

グリッドはページのレイアウトプランです

<br /> 英語原文: http://desktoppub.about.com/od/...

Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...

Vueはechartsを使用して組織図を描画します

昨日、円形のプログレスバー (Vue 円形プログレスバーを参照してください) についてブログを書きま...

Linux で NFS ファイル共有サーバーを構築するための詳細な手順

Linux が NFS サーバーを構築異なるオペレーティング システム間でデータを共有するために、通...

インタビューの質問: ホーリー グレイル レイアウトとダブル ウィング レイアウトの違い

序文今日は、聖杯レイアウトとダブルウィングレイアウト、そしてそれらの違いについてお話しします。この2...

nginx でのリクエストのカウント追跡の簡単な分析

まずは適用方法を説明します。nginxモジュールにはjtxyとjtcmdの2つがあります。 http...

MySQLのデッドロックとログに関する詳細な説明

最近、MySQL オンラインでいくつかのデータ異常が発生しましたが、すべて早朝に発生しました。ビジネ...

テーブルセルの幅tdの設定は無効であり、内部コンテンツによって常に引き伸ばされます

テーブルページを作成するときに、td に設定された幅が無効になることがあります。td の幅は常に内部...

CentOS 6-7 PHPのyumインストール方法(推奨)

1. 現在インストールされているPHPパッケージを確認するyum list installed |...

HTMLの空リンクの役割についての簡単な説明

空のリンク:つまり、ターゲット エンドポイントとのリンクはありません。フォーマット <a hr...

MySQLトリガートリガー例の詳細な説明

目次トリガーとは何かトリガーを作成する表は次のようになります。さらにいくつかの単語を挙げます。制限と...

HTML相対パスの親ディレクトリと子ディレクトリの書き方

親ディレクトリを指定する方法../ はソース ファイルの親ディレクトリを表し、../../ はソース...

Linux sftp コマンドの使用法の概要

sftp は、安全なファイル転送プロトコルである Secure File Transfer Prot...

MySQL での一時テーブルの使用例

ここ2日間ちょっと忙しくて、公式アカウントも数日更新が止まってしまいました。その結果、何人かの読者か...