typscript中封装axios请求(一)

注:本案例因为是vue3项目。故引入element-plus库,

1我们定义一下接口返回值,将其抽象出来定义成一个接口

export interface ResponseData<T>{
 code:number,
 data?:T,
 message:string
}

2 封装axios

import axios,{AxiosInstance,AxiosRequestConfig,AxiosResponse} from "axios"
import {ResponseData} from "../types"
import { ElMessage } from "element-plus"

let service:AxiosInstance;
service=axios.create({
    baseURL:import.meta.env.MODE==="developement"?"":import.meta.env.VITE_BimDevURL,
    timeout:5000
})
service.interceptors.request.use(
    (config:AxiosRequestConfig)=>{
        return config
    },
    (error:any)=>{
    console.log("请求error",error)
        Promise.reject(error)
    }
)

service.interceptors.response.use(
    (res:AxiosResponse)=>{
        console.log("axios",res)
        if(res.status==200){
            const data:ResponseData=res.data;
            if(data.code==1){
                return data.data
            }else{
                ElMessage({
                    message:data.message,
                    type:"error"
                })
            }
        }else{
            ElMessage({
                message:"程序异常",
                type:"error"
            })
            return Promise.reject(new Error(res.data.message))
        }
    },
    (error:any)=>{
        console.log("error",error)
        let errMsg=error.response.data.message||""
        ElMessage({
            message:errMsg,
            type:"error"
        })
        Promise.reject(new Error(error))
    }
)

3 封装get、put、post?delete等请求函数

const http=(url:string,method:string="GET",params:any)=>{
    switch(method){
        case "get":
            return service.get(url,{ params})
        case "delete":
            return service.delete(url,{ params })
        case "post":
            return service.post(url, params)
        case "put":
            return service.put(url, params)
        default:
            return service.get(url,{ params })
    }
}

export default http

这样我们在调用具体接口的时候就可以直接通过http("/api/login","post".{userame:"xx",password:"xxx"})这样来调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值