当前位置: 首页 > news >正文

关于axios的二次封装

@1 第一步 我们一般都会先导入axios
        import axios from ‘axios’
@2 第二步 创建axios的实例 可以同时创建多个实例 每个实例配置不同
        const http = axios.create( { 
                // 这里面可以做一些基础的配置 比如基础路径 ,axios 请求超时的时间
                baseURL:'https://www.baidu.com',
                timeout:60000
         })
@3 只针对post请求,请求主体做格式化的处理,安装后台的要求,如果不设置transfromRequest
        会把Data对象转化为JSON字符串传递给服务器, axios内部会识别常用的数据格式,自动设
        置请求头中的Content-Type
        http.defaults.transfromRequest = data =>{
                if(typeof data === 'object') qs.stringfy(data)   // qs.stringfy是转化为name='zs'$age=12
                return data
        }
        http.default.validateStatus = status = > {
                return status >= 200 && status < 400  // 设置状态码在200到400之间都是成功的
        }
@4 设置请求拦截器  并且携带token
        http.interceptors.request.use(config=>{
                if(localstorags.getItem('token')){
                        config.headers.authorzation = localstorage.getItem('token')
                 }
                return config
        })
@5 设置响应拦截器
        http.intercepotrs.response.use(responst=>{
                return responst.data
        }, reson=>{

                 // 请求失败的处理
                let status = reson?.reponse.status
                     code = reson?.code
                if(status){ 
                        // 服务器返回的有结果 没有经过validateStatus状态码的校验
                        switch(+status){
                                case 404:
                                        alert('请求地址不存在')
                                        break;
                                case 500:
                                        alert('服务器发生未知错误')
                                        break;
                                。。。
                        }
                 }else if(code==='ECONNABORTED'){
                        // 请求超时
                        alert(‘当前请求超时’)
                }else if(axios.isCancel(reson)){
                        // 请求中断
                        alert('请求中断')
                }else {
                        alert(‘网络中断,请检查网络')
                }
                return Promise.reject(reson)
        })
@ 6 记得导出
        export default http

相关文章:

  • Kafka安全认证机制详解之SASL_PLAIN
  • Vue2/Vue3-插槽(全)
  • C++ KMP字符串 ||暴力算法 和 KMP算法模板题解法
  • 作业三详解
  • STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)
  • MR实战:词频统计
  • git本地创建分支并推送到远程关联起来
  • LLM之RAG实战(十三)| 利用MongoDB矢量搜索实现RAG高级检索
  • 【Unity嵌入Android原生工程】
  • java基础之Java8新特性-Stream(流)
  • 弹窗里el-cascader下拉框脱离文档流的解决办法
  • BLE Mesh蓝牙组网技术详细解析之Model Layer模型层(八)
  • MySQL-数据库概述
  • HTML----JavaScript操作对象BOM对象
  • how2heap-2.23-09-chunk_extend_and_overlapping
  • 5、React组件事件详解
  • Angular数据绑定机制
  • happypack两次报错的问题
  • KMP算法及优化
  • PHP那些事儿
  • React Native移动开发实战-3-实现页面间的数据传递
  • redis学习笔记(三):列表、集合、有序集合
  • Spring-boot 启动时碰到的错误
  • Vue ES6 Jade Scss Webpack Gulp
  • 回顾2016
  • 基于组件的设计工作流与界面抽象
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​configparser --- 配置文件解析器​
  • (AngularJS)Angular 控制器之间通信初探
  • (floyd+补集) poj 3275
  • (ros//EnvironmentVariables)ros环境变量
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (九十四)函数和二维数组
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (强烈推荐)移动端音视频从零到上手(下)
  • (实战篇)如何缓存数据
  • (四)c52学习之旅-流水LED灯
  • (五)网络优化与超参数选择--九五小庞
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .Net8 Blazor 尝鲜
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @DataRedisTest测试redis从未如此丝滑
  • @ModelAttribute使用详解
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [C++核心编程](四):类和对象——封装
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
  • [Foreman]解决Unable to find internal system admin account