TS封装axios

 本篇主要讲解TS中axios的两种封装和页面的使用

首先不管是哪一种方法,都要先下载 npm i axios -S

一.  HttpRequest类封装 (在TS项目里面的utils/axios.ts)

import axios from 'axios'
        class HttpRequest{
            constructor(){
                this.baseUrl=`http://localhost:3000`
            }
            getInsideConfig(){
                const config={
                    baseUrl:this.baseUrl,
                    headers:{
                        //
                    }
                }
                return config
            }
            //请求拦截
            interceptors(instance:AxiosInstance,url:string|number|underfined){
                instance.interceptors.request.use(config=>{
                    // 1. 添加全局的Loading
                    // 2. 请求头携带token
                    return config
                },(error:any)=>{
                    return Promise.reject(error)
                })
                //响应拦截
                instance.interceptors.response.use(res=>{
                    const { data } = res
                    console.log('返回数据处理',res);
                    return data
                },(error:any)=>{
                    switch(err.response.status){
                        case 400:
                            console.log('请求错误');
                            break;
                        case 401:
                            console.log('未授权,请重新登录');
                            break;
                        case 403:
                            console.log('拒绝访问');
                            break;
                        case 404:
                            console.log('请求出错');
                            break;
                        case 408:
                            console.log('请求超时');
                            break;
                        case 500:
                            console.log('服务器错误');
                            break;
                        case 502:
                            console.log('网络错误');
                            break;
                        case 503:
                            console.log('服务不可用');
                            break;
                        case 504:
                            console.log('网络超时');
                            break;
                        case 505:
                            console.log('HTTP版本不支持');
                            break;
                        default:
                            message=`连接出错(${err.response.status})!`
                    }
                    console.log('error==>',error);
                    return Promise.reject(error)
                })
            }
            request(options:AxiosRequestConfig){
                const instance=axios.create()
                options=Object.assign(this.getInsideConfig(),options)
                this.interceptors(instance,options.url)
                return instance(options)
            }
        }
        const http=new HttpRequest()
        export default http

二 : 接口方法封装 (文件api/index.ts)

import http from '../utils/axios'
        export const menuList=()=>{
            return http.request({
                url:'/users/menuList',
                method:'get'
            })
        }
        import { menuList } from '../api/index'
        getMenuList(){
            menuList().then(res=>{
                console.log(res);
            })
        }

第一种方法比第二种更加全面,一般项目中多用第一种方式封装Axios 有需要的小伙伴可以自行保存

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值