安装axios
cnpm i axios -S
项目根目录分别新建.env.development文件和.env.production文件
//.env.development文件
#开发环境
NODE_ENV = 'development'
# api地址
VUE_APP_BASE_API = 'http://localhost:3000'
//.env.production文件
#生产环境
NODE_ENV = 'production'
# api地址
VUE_APP_BASE_API = 'http://线上接口地址'
src文件夹下新建utils文件夹,建立request.js文件
import axios from 'axios';
//根据环境 给指定的接口地址
const request = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 3000
})
//状态码返回
const codeMessage = {
201: '新建或修改数据成功。',
202: '一个请求已经进入后台排队(异步任务)。',
204: '删除数据成功。',
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
401: '用户没有权限(令牌、用户名、密码错误)。',
403: '用户得到授权,但是访问是被禁止的。',
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
406: '请求的格式不可得。',
410: '请求的资源被永久删除,且不会再得到的。',
422: '当创建一个对象时,发生一个验证错误。',
500: '服务器发生错误,请检查服务器。',
502: '网关错误。',
503: '服务不可用,服务器暂时过载或维护。',
504: '网关超时。',
};
//请求拦截
request.interceptors.request.use(
config => {
return config
},
error => {
console.log('请求拦截错误', error) // for debug
return Promise.reject(error)
}
)
//响应拦截
request.interceptors.response.use(
response => {
console.log('响应返回值', response.data);
return response.data
},
error => {
const { response } = error
return Promise.reject({ "status": response.status, "message": codeMessage[response.status] })
}
)
export default request
封装请求接口(src文件夹下新建api文件夹,新建user.js文件)
import request from '@/utils/request';
export const getUser = () =>{
return request({
url:'get_user_info',
method:'get'
})
}
使用
import { getUser} = '@/api/user'
getUser()
.then(res=>{
console.log(res);
})
.catch(err=>{
console.log(err);
})