前提條件:vue-cli 項目vue
安裝:ios
npm
npm
在main.js導入:vue-cli
// 引入axios,並加到原型鏈中 import axios from 'axios'; Vue.prototype.$axios = axios; import QS from 'qs' Vue.prototype.qs = QS;
封裝好的axios,拿走不送:(最好是在main.js同級目錄建立一個 https.js 文件,複製粘貼下面代碼,改 接口地址 就能夠用)npm
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加入代碼json
:axios
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) }) }, // ================================================ },
文字不是不少,但重要的都在這,看代碼的註釋就好了app
不懂的能夠留言,咱們一塊兒探討post