【axiox】前后端接口通讯数据交互

  • 重要全局配置:
    • axios.create(); 设置axios请求的公共配置信息。

    • service.interceptors.request.use((config)=>{}) 请求拦截器

    • service.interceptors.response.use((res)=>{},(err)=>{}) 响应拦截器

    • const source = axios.CancelToken.source(); 用来取消接口请求的。

TypeScript 复制代码
import axios, { CancelToken } from 'axios';
const usbIP = 'http://192.168.42.1:8080';


// 创建默认请求配置数据;
// 每次service() 请求接口时,都会使用默认设置的参数内容。
const service = axios.create({ 
  baseURL: usbIP, // 设置 url 默认前缀
  timeout: 1000 * 30, // 设置全局超时时长
});


// const source = axios.CancelToken.source(); 
// 用来取消接口的,发送请求时传入 { cancelToken: source?.token }。
// 然后调用 source.cancel(''); 即可取消接口请求,('')括号内的就是取消[rejct]的信息内容。


// 设置接口请求拦截器:每个接口发送请求前,都会从这走一遍。
service.interceptors.request.use((config) => {
  return config
})

// 设置接口响应拦截器:每个接口返回数据时,都会先经过拦截器走一遍。
service.interceptors.response.use(
  (res) => {
    // ...
    return Promise.resolve(res.data);
  },
  (error) => {
    return Promise.reject(error);
  },
);



export interface HTTPConfig {
  url: string;
  method: 'get' | 'post' | 'delete' | 'head' | 'options' | 'put' | 'patch';
  data?: object;
  params?: object;
  headers?: object;
  responseType?: any;
  responseEncoding?: string;
  baseURL?: string;
  timeout?: number;
  cancelToken?: CancelToken;
}

type HTTP = <T>(config: HTTPConfig) => Promise<T>;
const useHttp: HTTP = (config) => {
  return service(config);
};

export default useHttp;

调用请求案例:

TypeScript 复制代码
import http from '@cut/http/request';

  getDeviceInfo(ip: string, source?: CancelTokenSource, timeout = 1000 * 5) {
    return http<DeviceInfo>({
      url: ip + '/device/info',
      method: 'get',
      timeout,
      cancelToken: source?.token,
    });
  },
相关推荐
前端大卫34 分钟前
Vue3 + Element-Plus 自定义虚拟表格滚动实现方案【附源码】
前端
却尘1 小时前
Next.js 请求最佳实践 - vercel 2026一月发布指南
前端·react.js·next.js
ccnocare1 小时前
浅浅看一下设计模式
前端
Lee川1 小时前
🎬 从标签到屏幕:揭秘现代网页构建与适配之道
前端·面试
Ticnix1 小时前
ECharts初始化、销毁、resize 适配组件封装(含完整封装代码)
前端·echarts
纯爱掌门人1 小时前
终焉轮回里,藏着 AI 与人类的答案
前端·人工智能·aigc
twl1 小时前
OpenClaw 深度技术解析
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Grok API 申请及使用
前端
星光不问赶路人2 小时前
vue3使用jsx语法详解
前端·vue.js
天蓝色的鱼鱼2 小时前
shadcn/ui,给你一个真正可控的UI组件库
前端