vue3+ts+axios请求封装
1.首先安装axios
npm install axios
2.request.ts统一封装的请求接口(本人是在utils里面新建 request.ts)
import axios from 'axios'import { ElMessage } from 'element-plus'// import { getToken } from '@/utils/auth'export const request =(options:any)=> {return new Promise((resolve, reject) => {// create an axios instanceconst service = axios.create({// baseURL: process.env.BASE_API, // api 的 base_urlbaseURL: '/api',timeout: 80000 // request timeout})// request interceptorservice.interceptors.request.use((config:any) => {let token:string =''//此处换成自己获取回来的token,通常存在在cookie或者store里面if (token) {// 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改config.headers['X-Token'] = tokenconfig.headers.Authorization = + token}return config},error => {// Do something with request errorconsole.log("出错啦", error) // for debugPromise.reject(error)})// response interceptorservice.interceptors.response.use((response:any) => {return response.data},error => {console.log('err' + error) // for debugif(error.response.status == 403){ElMessage.error('错了')}else{ElMessage.error('服务器请求错误,请稍后再试')}return Promise.reject(error)})// 请求处理service(options).then((res) => {resolve(res)}).catch((error) => {reject(error)})})}export default request
跟js一样的写法啦,就是把ts类型加上
3.调用api -service
import {request} from '@/utils/request'// 调用测试export function getTest() {return request({url: '/xxxxx/',//此处为自己请求地址method: 'get'})}4.调用过程为页面引入api文件,再由api调用统一的请求函数请求数据import { getTest} from "@/service/test";onBeforeMount(() => {getTest().then(response => {console.log("结果", response);}).catch(error => {console.log('获取失败!')});})
这些的前提是配置了代理转发。
