vue3.0封装axios请求以及拦截器

本文介绍了如何在Vue3.0项目中安装Axios,并进行请求的封装,详细讲解了创建request.js文件以及设置请求拦截器的步骤,旨在提升前端开发的效率和代码规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

npm i axios

新建request.js文件

request.js

import axios from 'axios'
import store from '@/store'
import router from '@/router'

export const baseURL = 'http://www.xxx.com'
const instance = axios.create({
    baseURL,
    timeout: 5000
})

// 请求头拦截器
instance.interceptors.request.use(config => {
    // 拦截业务逻辑,内容可替换
    // 1. 获取用户信息对象
    const { profile } = store.state.user;
    // 2. 判断是否有token
    if (profile.token) {
        // 3. 设置token
        config.headers.Authorization = `Bearer ${profile.token}`
    }
    return config
}, err => {
    return Promise.reject(err);
})

// 响应拦截器
instance.interceptors.response.use(res => res.data, err => {
    // 失败时进入这里,内容根据store文件里的内容可替换
    if (err.response &
前置知识: - Vue3.0 - Axios - 微服务 Axios是一个基于Promise的HTTP库,可以用于浏览器和Node.js。在Vue中,我们通常使用Axios来发送HTTP请求。 微服务是一种面向服务架构的软件设计风格。它把一个应用划分为一些小的、独立的、可替换的服务,每个服务运行在自己的进程中,服务之间通过轻量级通信机制互相协作。微服务架构可以提高应用的可伸缩性和可维护性。 下面是一个基于Vue3Axios的微服务请求封装示例: 1. 安装Axios ``` npm install axios ``` 2. 创建axios实例 ```js import axios from 'axios' const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // 微服务请求的基础路径 timeout: 5000 // 超时时间 }) // 请求拦截器 service.interceptors.request.use( config => { // 在请求发送之前做些什么 return config }, error => { // 对请求错误做些什么 console.log(error) // for debug return Promise.reject(error) } ) // 响应拦截器 service.interceptors.response.use( response => { // 对响应数据做些什么 const res = response.data if (res.code !== 20000) { // 如果响应状态码不是20000,则视为错误 return Promise.reject(new Error(res.message || 'Error')) } else { return res } }, error => { // 对响应错误做些什么 console.log('err' + error) // for debug return Promise.reject(error) } ) export default service ``` 3. 封装请求方法 ```js import request from '@/utils/request' export function getUserInfo() { return request({ url: '/user/info', method: 'get' }) } export function login(data) { return request({ url: '/user/login', method: 'post', data }) } export function logout() { return request({ url: '/user/logout', method: 'post' }) } ``` 在组件中使用: ```js import { getUserInfo } from '@/api/user' export default { name: 'HelloWorld', created() { getUserInfo().then(response => { console.log(response) }) } } ``` 这样就完成了基于Vue3Axios的微服务请求封装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值