1:安装依赖:npm install --save axios
2:组件中单引入的方式
import ***axios*** from "axios";
3:全局引用
import { ***createApp*** } from "vue";
import App from "./App.vue";
import ***axios*** from "axios";
let app = ***createApp***(App);
app.config.globalProperties.$axios = axios;
app.mount("#app");
3-1:在组件中通过调用
this.$aixos
4:在项目的src下创建文件夹utils,再创建request.js(或者http.js)文件,这是封装axios方法

import axios from "axios";
import querystring from "querystring";
const errorHandle = (status, info) => {
switch (status) {
case 400:
console.log("语义有误");
break;
case 401:
console.log("服务器认证失败");
break;
case 403:
console.log("服务器拒绝访问");
break;
case 404:
console.log("服务器拒绝访问");
break;
case 500:
console.log("服务器遇到意外");
break;
case 502:
console.log("服务器遇到意外");
break;
default:
console.log("未知错误");
}
};
const axiosInstance = axios.create({
headers: { "X-token-Header": "tokenValue" },
timeout: 50000,
});
axiosInstance.interceptors.request.use(
(config) => {
console.log("method", config.method);
if (config.method === "post") {
config.data = querystring.stringify(config.data);
console.log("这是一个post方法");
}
if (config.method === "get") {
console.log("这是一个get方法");
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
axiosInstance.interceptors.response.use(
(response) => {
console.log("响应状态", response.status);
return response.status === 200
? Promise.resolve(response)
: Promise.reject(response);
},
(error) => {
console.log("进入响应错误的信息", error.status);
errorHandle(error.status, error.info);
}
);
export default axiosInstance;
4-1:在项目的src下创建文件夹api,再创建path.js文件(存放全部的请求路径)与index.js文件,这是集中管理的网络请求
const allPathUrl = {
baseUrl: "http://localhost:9080",
getXXLInfoByPage: "/api/xxl-job-admin/jobinfo/pageList",
updateXXLInfo: "/api/xxl-job-admin/jobinfo/update",
};
export default allPathUrl;
import path from "./path.js";
import axiosInstance from "@/utils/request.js";
const api = {
getXXLInfoByPage(param) {
return axiosInstance.get(path.getXXLInfoByPage, { params: param });
},
};
export default api;
4-2:在项目中可以直接使用
<script setup>
import EelmentTable2 from "@/components/EelmentTable2.vue";
import { provide, reactive, ref, toRaw, watch } from "vue";
import api from "@/api/index.js";
const dataTwo = reactive([]);
const total = ref(0);
const start = ref(0);
const length = ref(10);
const triggerStatus = ref(0);
const params = reactive({
jobGroup: 11,
triggerStatus: triggerStatus.value,
start: start.value,
length: length.value,
});
const getServerData = () => {
api
.getXXLInfoByPage(toRaw(params))
.then((response) => {
let data = response.data;
console.log(data);
console.log("ddd", params.start);
dataTwo.splice(0);
data.data.forEach((d) => {
dataTwo.push(d);
});
total.value = data.recordsTotal;
})
.catch((error) => {
console.log("请求失败", error);
});
};
getServerData();
const getData = (newPage) => {
console.log("4444", newPage);
};
provide("dataThree", total);
provide("pageNumber", start);
watch(start, (newValue) => {
getServerData();
});
</script>
<template>
<div>axios:父组件的当前页面:{{ start }}</div>
<br />
<EelmentTable2 :dataTwo="dataTwo" msg="我是props的消息" @clickOne="getData" />
</template>