国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue 里面使用axios 和封裝的示例代碼

2019-11-19 15:35:08
字體:
來源:轉載
供稿:網友

vue官方推薦使用 axios發送請求

首先上需求

1.需要封裝全局調用
2.返回一個promise對象
3.錯誤全局統一處理
4.除了登錄界面token帶入頭部
5.登錄時候把用戶信息自動存到vuex里面

首先上封裝代碼

/** * User: sheyude * Date: 2017/8/23 0023 * Time: 下午 13:15 * */import axios from 'axios';// 導入配置文件 配置文件就導入的請求的前綴地址import {defaults} from '@/config/'import storage from './storage'// 這是一個餓了么的彈框import { Message } from 'element-ui';//路由配置import router from '@/router'/** * 封裝的全局ajax請求 */class Axios{  constructor (){    this.init();  };  /**   * 初始化   */  init(){    axios.defaults.baseURL = defaults.baseURL;  };  _setUserInfo(data){    // 把請求的數據存入vuex    store.commit('setUserInfo',data);  }  /**   * 判斷是否是登錄   * @param url   * @returns {boolean}   * @private   */  _isLogin(url){        if(url != '/app/login'){      axios.defaults.headers = {'x-token': store.state.user.user.token.token};      return false;    }else{      return true;    }  }  /**   * 判斷是否返回數據   * @param data 接收到的數據   * @returns {boolean}   * @private   */  _isStatus(data){    if(data.code == 100){      router.push('/login');      Message.error(data.message || '請重新登錄!');      return false    }else{      return true    }  }  /**   * 全局錯誤處理   * @param data 傳入錯誤的數據   * @private   */  _error(data){    console.log(data)    Message.error('網絡錯誤!');  }  /**   * GET 請求 {es6解構賦值}   * @param type 包含url信息   * @param data 需要發送的參數   * @returns {Promise}   * @constructor   */  HttpGet({url},data) {    console.log(data)    // 創建一個promise對象    this._isLogin(url)    this.promise = new Promise((resolve, reject)=> {      axios.get(url,{params:data})        .then((data) => {        // console.log(data)          if(this._isStatus(data.data)){            resolve(data.data);          }        })        .catch((data) =>{          this._error(data);        })    })    return this.promise;  };  /**   * POST 請求   * @param type Object 包含url信息   * @param data Object 需要發送的參數   * @param urlData Object 需要拼接到地址欄的參數   * @returns {Promise}   * @constructor   */  HttpPost({url},Data,urlData){    // 判斷是否加頭部    this._isLogin(url);    // 創建一個promise對象    this.promise = new Promise((resolve, reject)=> {      for(const item in urlData){        url += '/' + urlData[item];      };      axios.post(url,Data)        .then((data) => {          // 是否請求成功          if(this._isStatus(data.data)){            // 是否需要存數據            if(this._isLogin(url)){              this._setUserInfo(data.data)            };            resolve(data.data)          };        })        .catch((data) =>{          this._error(data);        })    })    return this.promise;  };};export default new Axios();

調用方式

this.$axios.HttpPost(this.audit.auditGet,this.params) .then((data) => {    this.pageData = data.data })

接收2個參數

1 url 地址
2 需要傳遞的參數

我目前全局注冊了 使用需要掛載到vue原型

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华宁县| 广宁县| 平邑县| 淳安县| 凭祥市| 延长县| 沭阳县| 黄陵县| 齐齐哈尔市| 平陆县| 鲁山县| 霸州市| 通许县| 西乡县| 读书| 深水埗区| 铁岭市| 沂南县| 英吉沙县| 门源| 花莲县| 辰溪县| 延吉市| 中山市| 莎车县| 宾川县| 莱西市| 东明县| 鄂托克前旗| 长葛市| 安陆市| 汶上县| 清水县| 扶风县| 崇信县| 苏尼特右旗| 鞍山市| 大冶市| 中西区| 永嘉县| 杭锦后旗|