vue 项目 基于axios 对常用5种(POST、GET、PUT、DELETE、PATCH)请求进行封装
一、 安装axios使用 npm: npm install axios --save使用 cnpm: cnpm install axios --save使用 yarn: yarn add axios --save建议使用cnpm !!!二、src目录下新建lib文件夹lib文件夹下新建request.js三、配置axios 进行封装import axios from 'axios'import s
·
一、 安装axios
使用 npm: npm install axios --save
使用 cnpm: cnpm install axios --save
使用 yarn: yarn add axios --save
建议使用cnpm !!!
二、src目录下新建lib文件夹lib文件夹下新建request.js
三、配置axios 进行封装
import axios from 'axios'
import store from '@/store'
// 环境判断设置baseURL
let baseURL = process.env.NODE_ENV === 'development' ? 'dev.com' : process.env.NODE_ENV === 'production' ? 'pro.com' : 'test.com'
// 定义请求头 使用JSON格式
axios.defaults.baseURL = baseURL // Default base path
axios.defaults.headers.post['Content-Type'] = 'application/json;charSet=UTF-8'
axios.defaults.headers.get['Content-Type'] = 'application/json;charSet=UTF-8'
axios.defaults.headers.put['Content-Type'] = 'application/json;charSet=UTF-8'
axios.defaults.headers.delete['Content-Type'] = 'application/json;charSet=UTF-8'
axios.defaults.headers.patch['Content-Type'] = 'application/json;charSet=UTF-8'
// 添加请求拦截器
axios.interceptors.request.use((config) => {
// 携带token 身份验证
let Token = store.getters['token']
if (Token) {
config.headers.Authorization = `Bearer ${Token}`
}
return config
}, (error) => {
return Promise.reject(error)
})
// 添加响应拦截器
axios.interceptors.response.use((response) => {
if (response.status !== 200) {
console.log('请求信息', response)
return Promise.reject(new Error('Error'))
} else {
return response
}
}, (error) => {
console.log(`err${error}`)
return Promise.reject(error)
}
)
导出post、get、delete、put、patch方法
export default {
/**
* get 方法封装
* @param url
* @param params
* @returns {Promise}
*/
get (url, params = {}) {
return new Promise((resolve, reject) => {
// 若使用this.$http.get('qyolg5_1GB3ak1aU2jmKq1nWpMs.js', {bu: 'DiUrXmptcGdhZJ8BogErlAEr'}) 方式传参 必须使用 {params:params}
// 若使用this.$http.get('qyolg5_1GB3ak1aU2jmKq1nWpMs.js?bu=DiUrXmptcGdhZJ8BogErlAEr') 方式传参 必须使用 params
axios.get(url, {params: params}).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
},
/**
* post
* @param url
* @param params
* @returns {Promise}
*/
post (url, params = {}) {
return new Promise((resolve, reject) => {
axios.post(url, params)
.then(res => {
resolve(res.data)
}, err => {
reject(err)
})
})
},
/**
* delete 方法封装
* @param url
* @param params
* @returns {Promise}
*/
delete (url, params = {}) {
return new Promise((resolve, reject) => {
axios.delete(url, params).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
},
/**
* put 方法封装
* @param url
* @param params
* @returns {Promise}
*/
put (url, params = {}) {
return new Promise((resolve, reject) => {
axios.put(url, params).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
},
/**
* patch 方法封装
* @param url
* @param params
* @returns {Promise}
*/
patch (url, params = {}) {
return new Promise((resolve, reject) => {
axios.patch(url, params).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
}
}
四、main.js 引入使用
import request from './lib/request' // 全局请求
// 全局请求
Vue.prototype.$http = request
五、页面中使用
this.$http.post('path', {params})
更多推荐
已为社区贡献1条内容
所有评论(0)