Axios を使用して Vue2 がリクエストを開始する詳細なプロセス記録

Axios を使用して Vue2 がリクエストを開始する詳細なプロセス記録

序文

この記事をご覧になった時点で、クロスドメイン リクエストとは何か、またその処理方法については既にご存知かと思います。この記事では詳細には触れません。

この記事の背景は Springboot2.3 をベースに構築されています。コントローラーにはビジネス ロジックは記述されず、フロントエンドのデバッグにのみ使用されます。

コントローラーで使用されるR.successは、私がカプセル化したツール クラスです。コードは記事の最後にあります。

Axiosのインストールと設定

プロジェクトディレクトリでコマンドを実行してaxiosをインストールします

npm インストール -S axios

srcパスのmain.jsファイルを開き、ファイルにaxios依存関係を導入し、vueグローバルプロパティにマウントします。

// axios 依存関係を参照 import axios from 'axios'

// vue にハングアップします。ここでは axios をリクエストとしてマウントし、this.request を使用してコンポーネント内で axios を呼び出すことができます。 Vue.prototype.request = axios;

GET リクエストは、axios の get メソッドを呼び出すことによって開始されます。それをクリックすると、メソッドが url と config の 2 つのオブジェクトを受け取ることがわかります。

シンプルなGETリクエストを開始する

@レストコントローラ
@RequestMapping("/ユーザー")
パブリッククラスUserController{
    @GetMapping("/リスト")
    パブリックRリスト(){
        return R.success("ユーザーリストのクエリが成功しました!");
    }
}
<テンプレート>
    <div id="インデックス">
        <button @click="selectList">ユーザーを照会</button>
    </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
    名前: "インデックス",
    メソッド: {
        選択リスト() {
            // 単純な GET リクエストは、URL を渡すだけで実装できます。this.request.get("http://localhost:8000/user/list").then(res => {
                コンソールにログ出力します。
            }).catch(e => {
                コンソールにログ出力します。
            })
        }
    }
}
</スクリプト>
<スタイル></スタイル> 

シンプルなGETリクエストを開始し、パラメータを渡す

@レストコントローラ
@RequestMapping("/ユーザー")
パブリッククラスUserController{
    @GetMapping("/get")
    パブリックR get(文字列id) {
        return R.success("ユーザー獲得に成功しました!");
    }
}
選択する() {
    設定 = {
        パラメータ: {id: "1"}
    }
    // URL の後に config オブジェクトが続きます。config オブジェクトの params 属性はリクエストパラメータに対応します this.request.get("http://localhost:8000/user/get", config).then(res => {
        コンソールにログ出力します。
    }).catch(e => {
        コンソールにログ出力します。
    })
},

POSTリクエストを行う

POST リクエストは axios の post メソッドによって呼び出されます。これをクリックすると、このメソッドのパラメータ リストに 3 つのオブジェクトがあることがわかります。

シンプルなPOSTリクエストを開始する

@レストコントローラ
@RequestMapping("/ユーザー")
パブリッククラスUserController{
    @PostMapping("/save")
    パブリックR保存() {
        return R.success("ユーザーが正常に追加されました!");
    }
}
保存() {
    // 単純な POST リクエストの送信は、単純な GET リクエストと似ています。get メソッドを post メソッドに変更するだけです。this.request.post("http://localhost:8000/user/save").then(res => {
        コンソールにログ出力します。
    }).catch(e => {
        コンソールにログ出力します。
    })
}, 

POSTリクエストを開始し、パラメータを送信する(I)

@レストコントローラ
@RequestMapping("/ユーザー")
パブリッククラスUserController{
    /**
     * 一般的に、POST リクエストを開始すると、パラメータはリクエスト本体に配置され、@RequestBody を通じて解析されます。* ここではエンティティ クラスを作成せず、Map コレクションを直接使用して受信します。*/
    @PostMapping("/save")
    パブリック R 保存(@RequestBody Map<String, String> データ) {
        return R.success("ユーザーが正常に追加されました!")
                .setAttribute("名前", data.get("ユーザー名"))
                .setAttribute("pwd", data.get("パスワード"));
    }
}
保存() {
    データ = {
        ユーザー名:「ジャワ小学生丶」、
        パスワード: "123456789"
    }
    // パラメータリストを見ると、推測できるはずです。2 番目のパラメータにオブジェクトを入れるだけです。 // このメソッドによって運ばれるパラメータはリクエスト本体に配置されることに注意してください this.request.post("http://localhost:8000/user/save", data).then(res => {
        コンソールにログ出力します。
    }).catch(e => {
        コンソールにログ出力します。
    })
},

POST リクエストを開始してパラメータを送信する (パート 2)

前述の通り、データを使って直接渡されるパラメータはリクエストボディに配置され、バックエンドは@RequestBodyを使ってそれを取得する必要があります。ここでは、パラメータをパスパラメータに変更して送信します。

@レストコントローラ
@RequestMapping("/ユーザー")
パブリッククラスUserController{
    @PostMapping("/save")
    パブリック R save(文字列ユーザー名、文字列パスワード) {
        return R.success("ユーザーが正常に追加されました!")
                .setAttribute("名前", ユーザー名)
                .setAttribute("pwd", パスワード);
    }
}
保存() {
    設定 = {
        パラメータ: {
            ユーザー名:「ジャワ小学生丶」、
            パスワード: "123456789"
        }
    }
    // ここではデータは使用されず、代わりにパラメータの受け渡しに config が使用されるか、またはオブジェクトがパラメータとしてカプセル化されて this.request.post("http://localhost:8000/user/save", null, config).then(res => {
        コンソールにログ出力します。
    }).catch(e => {
        コンソールにログ出力します。
    })
},

ファイルのアップロードテスト

GET や POST リクエスト以外にも、PUT、DELETE などのリクエストの種類があります。ここでは一つずつテストすることはしません。ファイルのアップロードについて学習しましょう。

@レストコントローラ
@RequestMapping("/ユーザー")
パブリッククラスUserController{
    @PostMapping("/アップロード")
    パブリック R アップロード(MultipartFile ファイル、文字列ファイル名) {
        // ファイル オブジェクトは受信したファイルであり、ファイルの処理ロジックは省略されます...
        return R.success("ファイルのアップロードが成功しました!")
                .setAttribute("ファイル名", ファイル名);
    }
<テンプレート>
    <div id="インデックス">
        <!-- input:file はファイルを選択するために使用されます。ファイルを選択すると、変更イベントがトリガーされ、fileChange メソッドが呼び出されます -->
        <input type="file" id="file" @change="fileChange" />
        <!-- ファイルのアップロード方法を実行します-->
        <button @click="upload">クリックしてアップロード</button>
    </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
    名前: "インデックス",
    データ() {
        戻る {
            ファイル: null
        }
    },
    メソッド: {
        ファイル変更(イベント) {
            // このメソッドはファイルが選択されたときにトリガーされ、ファイル オブジェクトがファイルに保存されます。this.file = event.target.files[0];
        },
        アップロード() {
            // FormData オブジェクトを作成し、その中にファイルを配置します。また、他のパラメータも配置できます。let data = new FormData();
            data.append('ファイル', this.file);
            data.append('fileName', "11223344.txt");
            // 設定オブジェクトを作成し、リクエストヘッダータイプを multipart/form-data に設定します
            設定 = {
                ヘッダー: {'Content-Type': 'multipart/form-data'}
            }
            // 作成したオブジェクトでリクエストを開始します this.request.post('http://localhost:8000/user/upload', data, config).then(res => {
                コンソールにログ出力します。
            })
        }
    }
}
</スクリプト> 

Axios 構成の設定

観察すると、Axios リクエストは config オブジェクトを受信し、構成の詳細情報はnode_modules/axios/index.d.tsファイルで確認できることがわかります。

設定項目はたくさんあります。私も初心者なので、あまり触ったことがありません。ここではいくつかテストして、いつでも確認します。Axiosの中国語サイトをお勧めします。

ベースURL

baseURL は、各リクエストのルート アドレスを設定できるよく使用される属性です。リクエストを行うときは、リクエスト パスのみに注意する必要があります。

<スクリプト>
エクスポートデフォルト{
    名前: "インデックス",
    データ() {
        戻る {
            設定: {
                ベースURL: "http://localhost:8000"
            }
        }
    },
    メソッド: {
        テスト() {
            let data = {name: "Java小学生"};
            this.request.post("/user/save", データ, this.config).then(res => {
                コンソールにログ出力します。
            });
        },
    }
}
</スクリプト>

タイムアウト

タイムアウトもよく使用される設定項目です。これは、リクエストのタイムアウトをミリ秒単位で設定するために使用されます。0 に設定すると、タイムアウトは設定されません。

<スクリプト>
エクスポートデフォルト{
    名前: "インデックス",
    データ() {
        戻る {
            設定: {
                ベースURL: "http://localhost:8000",
                タイムアウト: 5000
            }
        }
    },
    メソッド: {
        テスト() {
            データ = {name: "張漢哲"};
            this.request.post("/user/save", データ, this.config).then(res => {
                コンソールにログ出力します。
            });
        },
    }
}
</スクリプト> 

資格情報付き

この属性もよく使用されます。withCredentials の値は bool 型で、Cookie を許可するかどうかを設定するために使用されます。Axios リクエストは、デフォルトでは Cookie を許可しません。テストのために、Controller を通じて sessionID を印刷できます。

<スクリプト>
エクスポートデフォルト{
    名前: "インデックス",
    データ() {
        戻る {
            設定: {
                ベースURL: "http://localhost:8000",
                // サーバーがCredentials: trueと連携する必要がある、
                タイムアウト: 5000
            }
        }
    },
    メソッド: {
        テスト() {
            let data = {name: "Java小学生"};
            this.request.post("/user/save", データ, this.config).then(res => {
                コンソールにログ出力します。
            });
        },
    }
}
</スクリプト> 

Axiosは今のところここに書かれています。これらの日々の開発を理解するのは基本的に問題ありません。設定に慣れたら、ツールクラスをカプセル化してみてください。

要約する

これで、Vue2 が Axios を使用してリクエストを開始する方法についての説明は終わりです。Vue2 が Axios を使用してリクエストを開始する方法についての関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue2でaxios httpリクエストを使用する問題を解決する
  • vue2.0 proxyTable で axios を使用してクロスドメイン リクエストを行う方法
  • Vue axios リクエストのタイムアウトの正しい処理
  • Vue axios 同期リクエストソリューション
  • Vue での Ajax リクエストに Axios を使用する詳細な説明
  • vue+axios グローバル追加リクエスト ヘッダーとパラメータ操作

<<:  Centos7 で NIS を構成する詳細な手順

>>:  HTMLデータ送信投稿_PowerNode Java Academy

推薦する

Docker で複数の MySQL コンテナを作成して実行する方法の例

1. mysql/mysql-server:latestイメージを使用してMySQLインスタンスを素...

Linux環境でのDockerインストールチュートリアル

1. 設置環境Dockerは次のCentOSバージョンをサポートしていますCentOS 6.5 (6...

MySQL 8.0.24 バージョンのインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 8.0.24バージョンのインストールと設定方法を記録し、皆さんと共有しますM...

Tencent Cloudでhive3.1.2を構築する方法を教えます

環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...

TomcatはXMLを解析し、リフレクションを通じてオブジェクトを作成します。

次のサンプル コードでは、Tomcat が XML を解析し、リフレクションを通じてオブジェクトを作...

CSSはマウスが画像に移動したときにマスク効果を実現します

1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...

Vue3 での provide と injection の使用

1. provideとinjectの説明Provide と Inject により、ネストされたコンポ...

タイプライター効果を実現する純粋な js

この記事の例では、タイプライター効果を実現するためのjsの具体的なコードを参考までに共有しています。...

CSS スタイルで一般的なグラフィック効果を示すサンプルコード

一般的な基本グラフィックと私が遭遇するいくつかの小さなアイコンについて簡単に説明します。以下は CS...

FTP、FTPS、SFTPの違いについて簡単に説明します

目次FTP、FTPS、SFTP の概要FTP FTPS FTPサーバーFTPソフトウェアのアクティブ...

MySQL 2級コンピュータ試験共通テストポイント 8つのMySQLデータベース設計最適化方法

MySQLデータベース設計の8つの最適化方法の詳細は次のとおりです。 1. 最も適切なフィールド属性...

CSSポジショニングによる階層関係の問題の詳細な説明

絶対、相対、固定位置の位置決めabsolue: 絶対配置。上、下、左、右を使用して、配置先の親要素に...

Vueグローバルカスタム命令の実践 モーダルドラッグ

目次背景実装のアイデア成果を達成する背景最近取り組んでいるプロジェクトは、Vue2 で構築されたプロ...

Vueでのバスの使用に関する詳細な説明

Vue バス メカニズム (バス) vuex を使用するだけでなく、vue 内の親子以外のコンポーネ...

Docker を使用して ELK 環境を迅速にデプロイする方法の詳細な説明 (最新バージョン 5.5.1)

Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...