vue3中集成axios

97 篇文章 2 订阅
88 篇文章 0 订阅

1 安装axios

yarn add axios

2 新建文件夹http
在这里插入图片描述
3 新建config.ts文件和httpServer.ts文件

config文件内容

// 管理后台公共接口地址
const serviceConfig = {
    // baseURL:"http://localhost:880",// mock
    // baseURL: "http://0.0.0.0:3001",// 后端接口地址
    baseURL:"/apis",// 跨域代理(跨域代理需要配置)
    useTokenAuthorization: true,
    // OtherContentType : "application/json; charset=UTF-8", 
    // ContentType : "application/x-www-form-urlencoded"
}
export default serviceConfig;

httpServer文件内容

//axiosInstance.js
//导入axios
import axios from 'axios'
import serverConfig from './config'
// import { ElLoading, ElMessage } from 'element-plus'// 引入loading 
//使用axios下面的create([config])方法创建axios实例,其中config参数为axios最基本的配置信息。
const serviceRequest = axios.create({
	baseURL: serverConfig.baseURL, //请求后端数据的基本地址,自定义
	timeout: 200000,               //请求超时设置,单位ms
	withCredentials: true, // 异步请求携带cookie
	headers: {
		// 设置后端需要的传参类型
		'Content-Type': 'application/json',
		// 'token': '',
		'X-Requested-With': 'XMLHttpRequest',
	}
})
let loading: any;
function start() {
	// loading = ElLoading.service({
	// 	lock: true,
	// 	text: 'Loading',
	// 	background: 'rgba(0, 0, 0, 0.7)',
	// })
}
declare module 'axios' {
	interface AxiosInstance {
		(config: AxiosRequestConfig): Promise<any>
	}
}

// loading.close()
// 添加请求拦截器
serviceRequest.interceptors.request.use(
	function (config:any) {
		// 在发送请求之前做些什么
		// if (config.url !== '/api/traceline/data' && config.url.indexOf('/api/file/list') == -1) {
		// 	start();
		// }
		// if (config.url == '/api/file/upload') {
		// 	config.headers['Content-Type'] = 'multipart/form-data'
		// }
		return config
	},
	function (error) {
		// 对请求错误做些什么
		return Promise.reject(error)
	}
)

// 添加响应拦截器
serviceRequest.interceptors.response.use(
	function (response) {
		// 2xx 范围内的状态码都会触发该函数。
		// 对响应数据做点什么
		// dataAxios 是 axios 返回数据中的 data
		loading.close()
		const dataAxios = response.data
		// 这个状态码是和后端约定的
		const code = dataAxios.reset
		return dataAxios
	},
	function (error) {
		// 超出 2xx 范围的状态码都会触发该函数。
		// 对响应错误做点什么
		loading.close()
		if (error.config.url.indexOf('/api/file/list') == -1) {
			// ElMessage.error(error.response.data.message)
		}

		return Promise.reject(error)
	}
)

//导出我们建立的axios实例模块,ES6 export用法
export default serviceRequest

4 新建apis文件夹和接口详细文件
在这里插入图片描述

userApi文件内容

// 导入axios实例
import serviceRequest from '../httpServe'

// 定义接口的传参
interface UserInfoParam {
	userID: string,
	userName: string
}

// 获取用户信息
export const apiGetUserInfo = (param: UserInfoParam) =>{
    return serviceRequest({
		url: '/list',
		method: 'post',
		data: param,
	})
}
// 登录
export const loginApi = (param:any) =>{
    return serviceRequest({
		url: '/api/auth/login/local',
		method: 'post',
		data: param,
	})
}
// 退出登录
export const outApi = (param:any) =>{
    return serviceRequest({
		url: '/api/auth/logout',
		method: 'post',
		data: param,
	})
}

5 页面调用
引入
在这里插入图片描述
逻辑编写
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

第7个前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值