首页 > 其他分享 >axios使用 && axios拦截器

axios使用 && axios拦截器

时间:2024-09-06 13:36:55浏览次数:10  
标签:拦截器 data error axios && res config response

1.安装

npm install axios

2.使用

img
_axios.post("/api/auth/", form.value).then((res) => {
      if (res.data.code === 0) {
        // {id: 1, name: username.value, token: "xxx88sdkweisdfsd"}
        store.doLogin(res.data.data)
        router.push({name: "home"})
      } else if (res.data.code === 1003) {
        Object.keys(res.data.detail).forEach((k) => {
          formError.value[k] = res.data.detail[k][0]
        })
      } else if (res.data.code === -1) {
        ElMessage.error(res.data.detail)
      }

    })

3.拦截器

img
import axios from "axios";
import {userInfoStore} from "@/stores/counter.js";
import router from "@/router/index.js";

let config = {
    baseURL: "http://127.0.0.1:8000",
    timeout: 20 * 1000
}
const _axios = axios.create(config)

_axios.interceptors.request.use(function (config) {
    // 1.去pinia中读取当前用户token
    const info = userInfoStore()

    // 2.发送请求携带token
    if (info.userToken) {
        if (config.params) {
            config.params['token'] = info.userToken
        } else {
            config.params = {token: info.userToken}
        }
    }
    return config;
})

// 根据状态码不同会走这两个函数:200成功走第一个,失败走第二个
_axios.interceptors.response.use(function (response) {
    // console.log("拦截器", response)
    // 认证失败
    if (response.data.code === "1000") {
        router.replace({name: "login"})
    }
    return response;
}, function (error) {
    // console.log("拦截器异常", error)
    if (error.response.data.code === "1000") {
        router.replace({name: "login"})
        // return error; // 执行成功
    }
    //...
    return Promise.reject(error); //想后续的异常去传递,执行下个异常
})

export default _axios;

4.别忘了引入_axios

img
import _axios from "@/plugins/axios.js";

标签:拦截器,data,error,axios,&&,res,config,response
From: https://www.cnblogs.com/cloud-2-jane/p/18400061

相关文章

  • Android 使用拦截器结合协程实现无感知的 Token 预刷新方案
    背景在应用中,我们通常使用Token作为用户认证的凭证。为了安全起见,Token一般设置较短的有效期,并通过refreshToken进行续期。传统的做法是当服务端返回Token过期的响应(如401)时,再进行刷新,但这种方式可能导致用户体验不佳(如突然的登录状态丢失、请求失败等)。网上关于A......
  • vue使用axios实现下载附件以及根据响应头content-disposition,拿到附件名称filename,实
    直接代码exportfunctiondownload(url){returndownloadserviceIGO({url:url,method:'get',responseType:'blob',closeMsg:true,loadingText:true})}/***批量下载附件*/......
  • 【Java】Spring-AOP与拦截器实战 (上手图解)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1认识依赖4.2使用AOP与拦截器4.2.1使用AOP4.2.1.1设置DemoAop类4.2.2.2设置切面4.2.2.3设......
  • Vue入门(四)Vue异步操作Axios
    一、Vue异步操作在Vue中发送异步请求,本质上还是AJAX。我们可以使用axios这个插件来简化操作!-使用步骤1.引入axios核心js文件。2.调用axios对象的方法来发起异步请求。3.调用axios对象的方法来处理响应的数据。-axios常用方法get:发起Get方式请求post:发起Po......
  • vue axios
    axios是基于promise的http库,可以用在浏览器和node.js中特性:从浏览器中创建XMLHttpRequests、从node.js创建http请求、支持promiseApi、拦截请求和响应、取消请求、自动转换JSON数据、客户端支持防御xsrfaxios就是一个库,也可以单独独立出来发送ajax。安装: npminstallaxiosa......
  • Springmvc中的处理器、拦截器、过滤器的执行时机
    Springmvc中的处理器、拦截器、过滤器的执行时机测试案例:publicclassMyFilterimplementsFilter{@Overridepublicvoidinit(FilterConfigfilterConfig)throwsServletException{System.out.println("--->>MyFilter.init");}@Override......
  • 过滤器与拦截器对比
    在JavaWeb开发中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求和响应的机制,但它们在使用场景、实现方式和功能上有一些重要的区别。 过滤器(Filter)特点:工作原理:过滤器是在请求到达Servlet之前或响应离开Servlet之后进行处理的。过滤器可以对请求和响应进行修改。配......
  • MyBatis源码(6)拦截器
    1、目标本文的主要目标是学习MyBatis拦截器的源码,本文将以插入操作为例debug拦截器相关的源码2、拦截器源码分析调用mapper接口的insert插入记录方法,会调用SqlSession对象的insert方法SqlSession执行insert方法Spring容器会创建SqlSessionTemplate对象,为了实现插入操......
  • sql拦截器
    好用的sql拦截器​ 写项目的时候遇到了好用的sql拦截器,自记录,整体结构如下:importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;......
  • Axios:轻松进行 HTTP 请求的强大工具
    在前端开发中,与服务器进行通信是非常常见的需求。无论是获取数据、发送表单,还是上传文件,HTTP请求都扮演着重要角色。虽然JavaScript提供了原生的fetchAPI和XMLHttpRequest,但它们在处理复杂请求时可能不太方便。这时候,Axios作为一个基于Promise的HTTP客户端库,提......