axiso封装

智数追光
• 阅读 124

简介

axios拦截器可以让我们在项目中对后端http请求和响应自动拦截处理,减少请求和响应的代码量,提升开发效率同时也方便项目后期维护。在请求响应的interceptors(因特塞泼特斯).这个里面的话.他分为请求拦截器和响应拦截器,请求拦截器里面一般在请求头里面携带token值.响应拦截器里面对状态码的判断.比方说返回401的时候就是token没权限.跳转到登录界面。

封装axiso首先下载

npm install axios

创建文件夹request,在文件夹中创建index.ts文件名,开始对axios进行手动封装封装

  1. 首先引入下载好的aixos
  2. 创建实例
  3. 请求拦截,分别包含请求成功 和 请求错误两个函数

    • 执行时机为:发起请求时,请求还没有发送出去时执行 请求拦截
    • 请求成功:请求头携带token
    • 请求错误:发生错误请求时,可以处理 4 开头的错误
    • 响应拦截,分别包响应成功 和 响应失败两个函数
  4. 执行时机为:请求结束后,服务器有响应的时候执行

    • 响应成功:返回状态码为2xx(200...)携带的数据
    • 响应失败:响应失败/错误时,可以对 5 开头的状态码进行处理、 * 请求超时、错误状态码的处理。
  5. 导出封装好的axios

手动封装axios代码详情

// 引入axios
import axios from axios
// 进度条和样式
import nProgress from "nprogress" // npm install nprogress
import "nprogress/nprogress.css"
// 实例化axios
const install = axios.create({
    // 请求地址的前缀 公共全局的URL
    baseURL:"",
    // 请求时长  --- 超出定义的时长,请求超时
    timeout:5000
})
// 请求拦截
install.interceptors.request.use(
    (config)=>{
        // 开始进度条
        nProgress.start()
        // 获取token
        const token = localStorge.getItem('token')
        // 请求头携带token    
        config.headers.Authorization = 'Bearer ' + token
        return config
    },
    (error)=>{
        return Promise.reject(error)
    }
)
// 响应拦截
install.interceptors.response.use(
    (response)=>{
        // 响应成功关闭进度条
        nProgress.done()
        // 返回响应的数据
        return response
    },
    (error)=>{
        // 请求超时处理
        if(error.message.includes('timeout')){
            alert('请求超时')
            return;
        }
        // 不同错误状态码处理
        const code = error.response.status;
        switch(code){
            case 400:
                console.log('请求错误');
                break;
            case 401:
                console.log('未授权');
                break;
            case 403:
                console.log('禁止访问');
                break;
            case 404:
                console.log('页面消失');
                break;
            case 500:
                console.log('服务器内部错误');
                break;
            case 502:
                console.log('网关错误');
                break;
        }
        return Promise.reject(error)
    }
)
// 导出封装好的aixos

以上是axios两次封装,我们还可以将他们的请求方式也封装一下,比如在同文件夹内新建一个methods.ts文件,然后如下代码

// 引入封装好的axios
import install from "./index"
// 定义任意类型接口
interface anyType{
    [key:string]:any | (string|number)
}
// 定义类型接口
interface dataType{
    url:string, // 路径
    method?:string,  // 请求方法 get / post...
    headers?:anyType, // 请求头
    params?:anyType, // get请求携带参数用的
    data?:anyType, // post请求携带参数用的
}
 
// 创建 get 请求方法
export const get = (data:dataType)=>{
    // 定义请求方法
    data.method = "GET"
    // 返回
    return install(data)
}
 
// 创建post请求方法
export const post = (data:dataType)=>{
    // 定义post请求方法
    data.method = "POST"
    // 返回
    return install(data)
}
点赞
收藏
评论区
推荐文章
东方客主 东方客主
4年前
Http请求头和请求响应头大全
HTTP响应头和请求头信息对照表HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。HTTP的头信息包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联。请求头标:允许客户端传递
BichonCode BichonCode
4年前
计算机网络
一、HTTP1.1 请求和响应报文开始⾏,⽤于区分是请求报⽂还是响应报⽂。在请求报⽂中的开始⾏叫做请求⾏(RequestLine)
Wesley13 Wesley13
3年前
.NET Core AutoWrapper 自定义响应输出
前言AutoWrapper是一个简单可自定义全局异常处理程序和ASP.NETCoreAPI响应的包装。他使用ASP.NETCoremiddleware拦截传入的HTTP请求,并将最后的结果使用统一的格式来自动包装起来.目的主要是让我们更多的关注业务特定的代码要求,并让包装器自动处理HTTP响应。这可以在构建API时加快开发时间,同时为HTT
Stella981 Stella981
3年前
Servlet主要相关类核心类 容器调用的过程浅析 servlet解读 怎么调用 Servlet是什么 工作机制
WEB简介Web项目是B/S结构浏览器/服务器模式的浏览器发起请求,服务器作出响应请求的发起和响应使用HTTP协议进行通讯所谓协议也就是一种固定格式而Socket是应用层与传输层的一层编程接口,屏蔽了传输层的细节所以Web项目也就是通过Socket发送HTTP请求和响应的过程只不过请求是浏览器发出来的响应是服务器发
Wesley13 Wesley13
3年前
HTTP—请求和响应消息的结构
HTTP消息结构HTTP请求消息和响应消息具有相似的结构,由以下部分组成︰1.startline:一行起始行用于描迹要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。2.\\HTTPheaders:\\一个可选的HTTP头集合指明请求或描迹消息正文。3.emptyline:一个空行
Wesley13 Wesley13
3年前
ng6中,在HTTP拦截器里,异步请求数据,之后再返回拦截器继续执行用户请求的方法研究
一、问题背景:   上面绕口的标题不知道大家看不看的懂。通常我们用拦截器就是两个目的,1、在请求头里统一添加请求头。2、对响应结果预先处理。   我现在项目就是利用拦截器,在请求头里增加:'Authorization':this.storage.token的请求头。//最精简的一个拦截器。一会儿
Easter79 Easter79
3年前
SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
本文源码GitHub:知了一笑https://github.com/cicadasmile/springbootbase一、拦截器简介1、拦截器定义拦截器,请求的接口被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。拦截器主要用来按照指定规则拒
Stella981 Stella981
3年前
SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
本文源码GitHub:知了一笑https://github.com/cicadasmile/springbootbase一、拦截器简介1、拦截器定义拦截器,请求的接口被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。拦截器主要用来按照指定规则拒
Wesley13 Wesley13
3年前
.net core MVC 通过 Filters 过滤器拦截请求及响应内容
前提:  需要nuget  Microsoft.Extensions.Logging.Log4Net.AspNetCore  2.2.6;       Swashbuckle.AspNetCore 我暂时用的是 4.01;描述:通过Filters 拦截器获取Api 请求内容及响应内容,并记录到日志文件;    有
liam liam
1年前
优化你的 JavaScript 项目:Axios request 封装指南
在开发中,为了提高效率,通常对进行封装,简化了请求的发送和对响应的处理。同时,统一错误处理机制有助于维护代码的清晰和一致性。本文介绍了一些高效封装Axios请求的方法。封装理念通过创建一个请求函数,我们可以隐藏Axios的直接调用,将请求的配置作为参数传入
京东云开发者 京东云开发者
1星期前
Spring 拦截器:你的请求休想逃过我的五指山!
拦截器概述在Spring框架中,拦截器(Interceptor)是一种强大的机制,它允许开发者在请求处理的不同阶段插入自定义逻辑。WebApplicationContext作为SpringWeb应用的上下文容器,为拦截器的配置和管理提供了基础支持。拦截器主