栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

typscript中封装axios请求(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

typscript中封装axios请求(一)

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

1我们定义一下接口返回值,将其抽象出来定义成一个接口
export interface ResponseData{
 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"})这样来调用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号