【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,
    });
  },
相关推荐
梦曦i7 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队7 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌恩大侠7 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
yume_sibai8 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
qiuhaipeng18 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
zzz_23688 小时前
个人 AI 记忆如何跨工具复用:用 Markdown、索引和 Skill 搭一个可治理的记忆库
前端·人工智能·react.js·前端框架·agent·agent测评
剑之所向10 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
计算机魔术师10 小时前
GPT-6 Astra幻觉砍到2%,却被一种老招数轻松绕过
前端
cjy00011111 小时前
2026AI 产品如何从一次性 Demo 变成可重复使用的业务工具?
前端·人工智能·fde
IT_陈寒11 小时前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端