【Vue】Request模块 - axios 封装&Vuex的持久化存储

       📝个人主页:五敷有你      

 🔥系列专栏:Vue

⛺️稳中求进,晒太阳

Request模块 - axios 封装

使用axios来请求后端接口,一般会对axios进行一些配置(比如配置基础地址,请求响应拦截器)

所以项目开发中都会对axios进行基本的二次封装,封装到一个request模块中,便于维护使用

  1. 安装axios
  2. 新建request模块(util/request.js)
  3. 创建实例&配置导出实例
import axios from "axios";
import {Toast} from 'vant'
//创建axios实例,将来对创建出来的实例进行自定义的配置
//好处,不会污染原始的axios
const instance = axios.create({
  //基础地址
  baseURL: 'http://cba.itlike.com/public/index.php?s=/api/',
  timeout: 1000,
 
});


//自定义配置 --配置请求响应拦截器


// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么(默认axios会多一层data包装,需要拦截器处理一下)
  const res=response.data;
  if(res.status!==200){
      //给提示 
      Toast(res.message)
      //抛出错误的promise
    throw Promise.reject(res.message)
  }

  return res




}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  return Promise.reject(error);
});






//导出配置好的实例
export default instance

测试使用

import request from '@/util/request'

和普通的axios使用一样 ,就是自定义的axios
requset.get('路径')

其他:

 const { data: { base64, key } } = await getPicCode()
 可以拆开

Vuex的持久化存储

封装好storage 存储模块,利用本地存储。进行VueX持久化存储

问题一:vuex刷新会丢失

将token存入本地。

localStorage.setItem("userInfo",JSON.stringify(response.data.data))

问题二:每次存取的时间太长,太麻烦

封装一个storage模块

// 约定一个通用的键名
const INFO_KEY = 'hm_shopping_info'
const HISTORY_KEY = 'hm_history_list'

// 获取个人信息
export const getInfo = () => {
  const defaultObj = { token: '', userId: '' }
  const result = localStorage.getItem(INFO_KEY)
  return result ? JSON.parse(result) : defaultObj
}

// 设置个人信息
export const setInfo = (obj) => {
  localStorage.setItem(INFO_KEY, JSON.stringify(obj))
}

// 移除个人信息
export const removeInfo = () => {
  localStorage.removeItem(INFO_KEY)
}

// 获取搜索历史
export const getHistoryList = () => {
  const result = localStorage.getItem(HISTORY_KEY)
  return result ? JSON.parse(result) : []
}

// 设置搜索历史
export const setHistoryList = (arr) => {
  localStorage.setItem(HISTORY_KEY, JSON.stringify(arr))
}


//使用
 import {getInfo,setInfo} from '@/storage'
 setInfo(Info)

相关推荐

  1. vuex实现持久存储

    2024-03-14 04:46:07       47 阅读
  2. Vuex如何做持久存储

    2024-03-14 04:46:07       31 阅读
  3. vueaxios封装拦截

    2024-03-14 04:46:07       12 阅读
  4. vue3+TS+pinia+cookies+axiox 实现简单登录持久

    2024-03-14 04:46:07       37 阅读
  5. 持久存储 StorageClass

    2024-03-14 04:46:07       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 04:46:07       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 04:46:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 04:46:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 04:46:07       18 阅读

热门阅读

  1. QT5.14.2 视频分帧:QT与FFmpeg的高效结合

    2024-03-14 04:46:07       20 阅读
  2. Llama-3即将发布:Meta公布其庞大的AI算力集群

    2024-03-14 04:46:07       20 阅读
  3. GO下grpc快速体验

    2024-03-14 04:46:07       19 阅读
  4. 三权分立学习

    2024-03-14 04:46:07       26 阅读
  5. flink-cdc-学习笔记(一)

    2024-03-14 04:46:07       17 阅读
  6. 面试经典-1-合并两个有序数组

    2024-03-14 04:46:07       18 阅读
  7. 有来团队后台项目-解析3

    2024-03-14 04:46:07       19 阅读
  8. 1688中国站获得工厂档案信息 API

    2024-03-14 04:46:07       23 阅读