いわゆるインターセプターは、いくつかのファイルをインターセプトすることです。この記事では、主にリクエストインターセプターを追加するための Vue と、vue-resource インターセプターの使用方法を紹介します。
1. 現象
エラーと設定要求情報の統合処理
2. axios をインストールします。コマンド: npm install axios --save-dev
2. config ディレクトリに新しいファイル axios を作成します。ルート ディレクトリ .js の内容は次のとおりです:
import axios from 'axios' // 配置默认的host,假如你的API host是:http://api.htmlx.club axios.defaults.baseURL = 'http://api.htmlx.club' // 添加请求拦截器 axios.interceptors.request.use(function (config) { // 在发送请求之前做些什么 return config }, function (error) { // 对请求错误做些什么 return Promise.reject(error) }); // 添加响应拦截器 axios.interceptors.response.use(function (response) { // 对响应数据做点什么 return response }, function (error) { // 对响应错误做点什么 return Promise.reject(error) });
3. main.js でそれを参照し、呼び出すエイリアス ($ajax) を設定します:
import axios from 'axios' import '../config/axios' Vue.prototype.$ajax = axios
図に示すように:
4. 、次のようなログイン投稿:
this.$ajax({ method: 'post', url: '/login', data: { 'userName': 'xxx', 'password': 'xxx' } }).then(res => { console.log(res) })
ps: vue-resource インターセプターの使用を見てみましょう
vue プロジェクトで vue-resource を使用するプロセスでは、一時的な要件を追加する必要があります。任意のページの http リクエストでトークンの有効期限が切れているかどうかを判断します。トークンの有効期限が切れている場合は、ログイン ページにジャンプする必要があります。各ページのhttpリクエスト動作に判定を追加したい場合、非常に膨大な修正作業が必要となります。それでは、vue-resource には、リクエストの応答をキャプチャするパブリック コールバック関数があるのでしょうか?答えは「はい」です!
vue-resource のインターセプターはまさにこのニーズに対する解決策です。各 http リクエストの応答後、インターセプタが次のように設定されている場合、最初にインターセプタ関数が実行され、応答ボディが取得され、その後、応答を
に返して受信するかどうかが決定されます。次に、このインターセプタに応答ステータス コードの判断を追加して、ログイン ページにジャンプするか、現在のページに留まってデータの取得を続けるかを決定します。
main.jsに以下のコードを追加します
Vue.http.interceptors.push((request, next) => { console.log(this)//此处this为请求所在页面的Vue实例 // modify request request.method = 'POST';//在请求之前可以进行一些预处理和配置 // continue to next interceptor next((response) => {//在响应之后传给then之前对response进行修改和逻辑判断。对于token时候已过期的判断,就添加在此处,页面中任何一次http请求都会先调用此处方法 response.body = '...'; return response; }); });
この方法を知る前はアホな方法を考えていましたが、修正工数もある程度軽減できます。この方法は、this.$$http.get メソッドを Vue にバインドして、各ページの http リクエストの $http の前に $ を追加するだけです。
rreeeみんなはどうやって学びましたか?急いで試してみてください。
関連する推奨事項:
以上がVue インターセプター vue-resource インターセプターの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。