【axios】-- axios 二次封装

基本封装部分

基本全局配置

如baseUrl,超出时间等

Token,密钥等

出于权限和安全考虑的密钥设置到请求头

响应的统一基本处理

主要针对于错误的情况做全局统一处理

封装的请求办法

把对接口的请求封装为一个方法

例子

复制代码
// 配置全局的基础配置:baseUrl,timeout,header,responType,withCredentials
import axios from "axios"
import router from "@/router"

// 也可以把请求拦截器里的定义的东西提取出来,创建一个js文件(配置中心),在配置中心统一定义(后续好维护),通过import引入进来

// base64
import {Base64} from "js-base64"
// 后面的请求用request来发
let request = axios.creat({
    // 基础配置
    baseURL:'http://localhost:9090/',
    // timeout表示请求超过timeout时间没有响应就中断(单位为毫秒)
    timeout:30*1000,
    // responseType:"json" 规定后端返回的数据格式,默认值是json
    responseType:"json",
    headers:{
        // 看有没有什么特殊的header要加
    }
})

// 请求拦截器
request.interceptors.request.use((config)=>{
    // token密钥的设置
    let token = localStorage.getItem("token");
    let user = localStorage.getItem("user")
    // 如果有值,代表以及登录了。这块我还没有详细区分这两个,都先判断,等研究这个的时候再来重写
    if (token || user){
        // 记得输出一下token和保存的user,下面的赋值,取决于user 的输出
        config.headers.token = token
    }

    // 密钥-secretId + 特殊算法(防止别人把token复制出来伪造请求)jwt记得研究一下
    let secretId = "hello";
    let secret = Base64.encode(secretId+new Date().toString()); //这里用的是后面加上时间戳,这个需要后端也加,然后进行比对就知道是不是客户端发送的了。记得要进行加密
    config.headers.secret = secret;
    return config
},error =>{
    // 请求出错了
    return Promise.reject(new Error(error))
})

// 响应拦截器
request.interceptors.response.use((res)=>{
    // 响应的统一处理(一般是来判断后端返回的状态码)
    // 只要发送成功,默认200
    const status = res.data.code || 200
    // 如果没有附带消息,默认"未知错误"
    const message = res.data.msg || "未知错误"
    if(status === 401){
        // 没权限,重新登录
        router.push("/login")
    }
},error =>{
    // 组件库的提示,$waring
    return Promise.reject(new Error(error))
})

export default request
相关推荐
小刘在重生~5 天前
Django|Ajax 入门、JSON 返回、ECharts 图表、文件上传完整笔记
ajax·django·json
零域码客6 天前
一文掌握 jQuery + Flask 全栈核心知识点(前端交互 + 后端接口 + 前后端联调)
前端·python·ajax·flask·jquery·前后端联调·web全栈
2601_962097489 天前
JavaScript 异步编程
javascript·ajax·回调函数·异步编程·子线程
lv__pf17 天前
ajax的使用、json、jquery
ajax·json·jquery
豆角焖肉19 天前
Layui+Layer 弹出层实现 CRUD:AJAX 无刷新新增修改删除后台实战
前端·ajax·layui
小白勇闯网安圈21 天前
Vue 进阶实战:事件修饰符、表单控制、购物车与 Ajax 请求
前端·vue.js·ajax
鬼手点金1 个月前
Scrapy 网络爬虫框架
爬虫·python·scrapy·ajax·html·json·requsts
云水一下1 个月前
零基础玩转bWAPP靶场(四十六):XSS - Reflected (AJAX/JSON)
web安全·ajax·json·xss·bwapp·reflected
starzy19901 个月前
Spark 核心之自定义累加器以及版本对比变化深度剖析
大数据·ajax·spark
云水一下1 个月前
零基础玩转bWAPP靶场(四十七):XSS - Reflected (AJAX/XML)
xml·web安全·ajax·xss·bwapp