序文この記事をご覧になった時点で、クロスドメイン リクエストとは何か、またその処理方法については既にご存知かと思います。この記事では詳細には触れません。 この記事の背景は Springboot2.3 をベースに構築されています。コントローラーにはビジネス ロジックは記述されず、フロントエンドのデバッグにのみ使用されます。 コントローラーで使用される 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)前述の通り、データを使って直接渡されるパラメータはリクエストボディに配置され、バックエンドは @レストコントローラ @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 オブジェクトを受信し、構成の詳細情報は 設定項目はたくさんあります。私も初心者なので、あまり触ったことがありません。ここではいくつかテストして、いつでも確認します。Axiosの中国語サイトをお勧めします。 ベースURLbaseURL は、各リクエストのルート アドレスを設定できるよく使用される属性です。リクエストを行うときは、リクエスト パスのみに注意する必要があります。 <スクリプト> エクスポートデフォルト{ 名前: "インデックス", データ() { 戻る { 設定: { ベース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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: HTMLデータ送信投稿_PowerNode Java Academy
1. mysql/mysql-server:latestイメージを使用してMySQLインスタンスを素...
1. 設置環境Dockerは次のCentOSバージョンをサポートしていますCentOS 6.5 (6...
この記事ではMySQL 8.0.24バージョンのインストールと設定方法を記録し、皆さんと共有しますM...
環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...
次のサンプル コードでは、Tomcat が XML を解析し、リフレクションを通じてオブジェクトを作...
1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...
1. provideとinjectの説明Provide と Inject により、ネストされたコンポ...
この記事の例では、タイプライター効果を実現するためのjsの具体的なコードを参考までに共有しています。...
一般的な基本グラフィックと私が遭遇するいくつかの小さなアイコンについて簡単に説明します。以下は CS...
目次FTP、FTPS、SFTP の概要FTP FTPS FTPサーバーFTPソフトウェアのアクティブ...
MySQLデータベース設計の8つの最適化方法の詳細は次のとおりです。 1. 最も適切なフィールド属性...
絶対、相対、固定位置の位置決めabsolue: 絶対配置。上、下、左、右を使用して、配置先の親要素に...
目次背景実装のアイデア成果を達成する背景最近取り組んでいるプロジェクトは、Vue2 で構築されたプロ...
Vue バス メカニズム (バス) vuex を使用するだけでなく、vue 内の親子以外のコンポーネ...
Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...