1,创建request.js
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
let base_url = process.env.BASE_URL;//这里baseUrl放在dev.env.js与prod.env.js
const service = axios.create({
baseURL: base_url,
timeout: 15000
})
// request拦截器
service.interceptors.request.use(config => {
console.log(config)
return config
}, error => {
console.log(error)
if (!error.response) {
console.log("Please check your internet connection.");
}
return Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(res => {
// 未设置状态码则默认成功状态
// console.log("res.data:"+JSON.stringify(res.data));
const code = res.data.code|| 200;
console.log(code)
// 获取错误信息
if (code !== 200){
if (code === 400) {
MessageBox.confirm(
'登录状态已过期,您可以继续留在该页面,或者重新登录',
'系统提示',
{
confirmButtonText: '重新登录',
type: 'warning'
}
).then(() => {
this.$router.push("/login")
})
}else{
Message.error(res.data.msg);
}
} else {
return res
}
},
error => {
return Promise.reject(error)
}
)
export default service
2,新建api.js,存放接口,也可以直接引用request
import request from '@/utils/request'
export const apiKit = {
//登录
login: (data) => {
return request({
url: '/api/user/login',
method: 'post',
data
})
}
}
3,组件使用
import { apiKit } from "../utils/api"
login(){
this.$refs.ruleForm.validate((valid) => {
if (!valid) return false;
let password = Crypto.encrypt(this.ruleForm.password),//加密
let params = {
userName: this.ruleForm.account,
password: password,
}
console.log(params)
apiKit.login(params).then((response) => {
console.log(response)
this.$message.success("登录成功!")
}).catch(err => console.log(err))
});
}
版权声明:本文为qq_42896240原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。