1. 程式人生 > >vue中使用axios最詳細教程

vue中使用axios最詳細教程

探討 this word 截器 .post 導入 .get geo http

前提條件:vue-cli 項目

安裝:

npm
npm

在main.js導入:

// 引入axios,並加到原型鏈中
import axios from ‘axios‘;
Vue.prototype.$axios = axios;
import QS from ‘qs‘
Vue.prototype.qs = QS;

封裝好的axios,拿走不送:(最好是在main.js同級目錄創建一個 https.js 文件,復制粘貼下面代碼,改 接口地址 就可以用)

import axios from ‘axios‘
import qs from ‘qs‘

axios.defaults.timeout 
= 5000; //響應時間 axios.defaults.headers.post[‘Content-Type‘] = ‘application/x-www-form-urlencoded;charset=UTF-8‘; //配置請求頭 axios.defaults.baseURL = ‘‘; //配置接口地址 //POST傳參序列化(添加請求攔截器) axios.interceptors.request.use((config) => { //在發送請求之前做某件事 if(config.method === ‘post‘){ config.data
= qs.stringify(config.data); } return config; },(error) =>{ console.log(‘錯誤的傳參‘) return Promise.reject(error); }); //返回狀態判斷(添加響應攔截器) axios.interceptors.response.use((res) =>{ //對響應數據做些事 if(!res.data.success){ return Promise.resolve(res); } return res; }, (error)
=> { console.log(‘網絡異常‘) return Promise.reject(error); }); //返回一個Promise(發送post請求) export function fetchPost(url, params) { return new Promise((resolve, reject) => { axios.post(url, params) .then(response => { resolve(response); }, err => { reject(err); }) .catch((error) => { reject(error) }) }) } ////返回一個Promise(發送get請求) export function fetchGet(url, param) { return new Promise((resolve, reject) => { axios.get(url, {params: param}) .then(response => { resolve(response) }, err => { reject(err) }) .catch((error) => { reject(error) }) }) } export default { fetchPost, fetchGet, }

開發環境一般要跨域,解決跨域問題(設置代理):vue-cli 3.0的在 package.json 同級目錄新建一個 vue.config.js 文件,加入下面代碼,其他版本找到配置文件的devServer加入代碼

module.exports = {
    //axios域代理,解決axios跨域問題
    baseUrl: ‘/‘,
    devServer: {
        proxy: {
            ‘‘: {
                target: ‘http://192.168.0.108:8090‘,
                changeOrigin: true,
                ws: true,
                pathRewrite: {

                }
            }
        }
    }
}

修改完後記得重啟項目應用配置

然後就到收獲的時候了,在要請求的vue模塊中導入並使用:

import https from ‘../https.js‘   // 註意用自己的路徑

// 請求後臺數據==================
            loginPost: function () {
                let params ={‘username‘: ‘admin‘, ‘password‘: ‘admin123‘, ‘rememberMe‘: ‘true‘,‘isMobile‘:‘1‘}
                https.fetchPost(‘/login‘,params ).then((data) => {
                    this.base.token = data.data.token    
                    // console.log("this.base.tokenthis.base.token",this.base.token)
                    this.indexPost2(this.rres)
                }).catch(err=>{
                        console.log(err)
                    }
                )
            },
            indexPost2:function (date) {
                var this_ = this
                this_.check = false
                var jobj ={data:{‘menuDate‘: date,‘token‘:this.base.token}}
                let string  = JSON.stringify(jobj)
                let params = {dailyInfo:string}
                https.fetchPost(‘/meals/mobile/getDailyMenuByDate‘, params)
                .then((data) => {
                    this_.base.indexData = data
                    this_.check = true
                    // console.log(‘thenthenthenthen‘,data)
                })
                .catch((err)=>{
                    console.log(err)

                })
            },
            // ================================================
        },

文字不是很多,但重要的都在這,看代碼的註釋就行了

不懂的可以留言,我們一起探討

vue中使用axios最詳細教程