vue中引入axiox发送请求
安装
npm install axios --save
使用方式分为两种情况:
main.js
import axios from 'axios'
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'
axios.interceptors.request.use(config => {
NProgress.start()
config.headers.Authorization = window.sessionStorage.getItem('token')
return config
})
axios.interceptors.response.use(config => {
NProgress.done()
return config
})
Vue.prototype.$http = axios
组件中使用
getMock(){
this.$axios({
url:'/parameter/query',
method: "get",
}).then(res =>{
console.log(res.data);
});
},
对axios进行封装
新建service文件夹,新建request.js
request.js
import axios from "axios";
import { BASE_URL, TIMEOUT } from "./config";
const BASE_URL = "https://httpbin.org";
const TIMTOUT = 5
const instance = axios.create({
baseURL: BASE_URL,
timeout: TIMEOUT,
});
instance.interceptors.request.use(
(config) => {
console.log("请求被拦截");
return config;
},
(err) => {}
);
instance.interceptors.response.use(
res => {
console.log("响应被拦截");
return res.data
},err => {
if (err && err.response) {
switch (err.response.status) {
case 400:
console.log("请求错误");
break;
case 401:
console.log("未授权访问");
break;
default:
console.log("其他错误信息");
}
}
return err;
}
);
export default instance;
项目中使用
import request from "./request";
const testHttpBin = async (params) => {
const res = await request({
url: "/get",
params: {
name: "ws",
age: 18,
},
});
console.log(res);
return res;
};
function testHttpBinPost(data) {
return request({
url: "/post",
method:'post',
data: {
name: "ws",
age: 20,
},
});
}
export { testHttpBin, testHttpBinPost };