typescript封装axios

import axios, { AxiosInstance, AxiosResponse, AxiosError } from 'axios'

// 定义返回数据类型
interface ResponseData {
  code: number
  message: string
  data: any
}

// 定义请求参数类型
interface RequestOptions {
  params?: object
  data?: object
}

// 创建 Axios 实例
const service: AxiosInstance = axios.create({
  baseURL: 'http://api.example.com',
  timeout: 5000,
})

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 在请求发送之前可以在此处添加 token 等信息
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  (response: AxiosResponse<ResponseData>) => {
    // 请求成功时的处理
    const res = response.data
    if (res.code !== 200) {
      // 处理错误
    } else {
      return res.data
    }
  },
  (error: AxiosError) => {
    // 请求失败时的处理
    return Promise.reject(error)
  }
)

// 封装请求方法
const request = (url: string, method: string, options: RequestOptions) => {
  return service({
    url,
    method,
    params: options.params,
    data: options.data,
  })
}

// 导出请求方法
export default {
  get(url: string, options: RequestOptions) {
    return request(url, 'get', options)
  },
  post(url: string, options: RequestOptions) {
    return request(url, 'post', options)
  },
  put(url: string, options: RequestOptions) {
    return request(url, 'put', options)
  },
  delete(url: string, options: RequestOptions) {
    return request(url, 'delete', options)
  },
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Allen_CV

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

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

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

打赏作者

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

抵扣说明:

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

余额充值