vite2.x+vue3.x项目搭建三-axios篇
·
一、安装axios
npm install axios
npm install qs
二、新建unit文件夹,并新建axios.js http.js

1.axios.js
element-plus 这个提前安装了,下一篇再写上
import axios from "axios";
// 使用element-plus ElMessage做消息提醒
import { ElMessage } from 'element-plus'
//1. 创建新的axios实例,
const service = axios.create({
// 公共接口 开发环境还是线上环境也可以用api
baseURL:"/api",
// 超时时间 单位是ms,这里设置了5s的超时时间
timeout: 50000,
});
// 2.请求拦截器
service.interceptors.request.use(
(config) => {
//发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加
// config.data = qs.stringify(config.data); //数据转化,也可以使用qs转换
// config.headers = {
// 'Content-Type':'application/x-www-form-urlencoded' //配置请求头
// }
//注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie
// const token = getCookie('名称');//这里取token之前,你肯定需要先拿到token,存一下
// if(token){
// config.params = {'token':token} //如果要求携带在参数中
// config.headers.token= token; //如果要求携带在请求头中
// }
// config.method === "post"
// ? (config.data = qs.stringify({ ...config.data }))
// : (config.params = { ...config.params });
return config;
},
(error) => {
Promise.reject(error);
}
);
// 3.响应拦截器
service.interceptors.response.use(
(response) => {
//接收到响应数据并成功后的一些共有的处理,关闭loading等
return response;
},
(error) => {
/***** 接收到异常响应的处理开始 *****/
if (error && error.response) {
// 1.公共错误处理
// 2.根据响应码具体处理
switch (error.response.status) {
case 400:
ElMessage.error = "错误请求";
break;
case 401:
ElMessage.error = "未授权,请重新登录";
break;
case 403:
ElMessage.error = "拒绝访问";
break;
case 404:
ElMessage.error = "请求错误,未找到该资源";
//window.location.href = "/NotFound"
break;
case 405:
ElMessage.error = "请求方法未允许";
break;
case 408:
ElMessage.error = "请求超时";
break;
case 500:
ElMessage.error = "服务器端出错";
break;
case 501:
ElMessage.error = "网络未实现";
break;
case 502:
ElMessage.error = "网络错误";
break;
case 503:
ElMessage.error = "服务不可用";
break;
case 504:
ElMessage.error = "网络超时";
break;
case 505:
ElMessage.error = "http版本不支持该请求";
break;
default:
ElMessage.error = `连接错误${error.response.status}`;
}
} else {
// 超时处理
if (JSON.stringify(error).includes("timeout")) {
ElMessage.error("服务器响应超时,请刷新当前页");
}
ElMessage.error("连接服务器失败");
}
//ElMessage.error(ElMessage.error)
/***** 处理结束 *****/
//如果不需要错误处理,以上的处理过程都可省略
return Promise.resolve(error.response);
}
);
//4.导出
export default service;
2.http.js
import request from "./axios";
import qs from "qs";
// json格式请求头
const headerJSON = {
"Content-Type": "application/json",
};
// FormData格式请求头
const headerFormData = {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
};
const http = {
/**
* methods: 请求
* @param url 请求地址
* @param params 请求参数
* @param json 判断数据发送是否是json格式
*/
get(url, params,json) {
const config = {
method: "get",
url: url,
headers: headerFormData
};
if (params) config.params = params;
return request(config);
},
post(url, params,json) {
const config = {
method: "post",
url: url,
headers: json ? headerJSON : headerFormData
};
if (params) config.data = json?params: qs.stringify(params);
return request(config);
},
put(url, params,json) {
const config = {
method: "put",
url: url,
headers: headerFormData
};
if (params) config.params = params;
return request(config);
},
delete(url, params,json) {
const config = {
method: "delete",
url: url,
headers: headerFormData
};
if (params) config.params = params;
return request(config);
},
};
//导出
export default http;
四、新建一个api文件,并新建个home.js

1.home.js
import http from "../unit/http";
export const recordFind = (data) => {
return http.post( "/record/find",
data,
false
);
};
2.页面调用
在home.vue页面调用
import { recordFind } from "@/api/home";
data(){
return{
newsList:[],
}
}
created() {
this.recordFind()
},
methods: {
recordFind() {
recordFind({
limit: 5,
subOrgUuid: "****",
}).then((res) => {
console.log(res);
if (res.data != "" && res.data != null) {
this.newsList = res.data;
}
});
},
},
更多推荐



所有评论(0)