当前位置: 首页 > article >正文

axios二次封装

axios的使用以及二次封装

  • 一:axios的使用
  • 二:vue中的二次封装
    • 1.终端下载
    • 2.main.js中引入
    • 3.封装axios实例--http.js
    • 4.添加请求拦截器
    • 5.添加响应1拦截器
    • 6.封装请求API
    • 7.组件内使用

一:axios的使用

1.下载

npm i axios -S

2.引入

import axios from 'axios'

3.使用
axios.get()
axios.post()
axios({
url:‘’,
method:‘’,
data:‘post传值方式’
}).then(res=>
console.log(res)//后端给前端返回的数据
)

二:vue中的二次封装

1.终端下载

npm i axios -S

2.main.js中引入

import axios from "axios";

3.封装axios实例–http.js

引入相关内容并创建axios实例

// axios的二次封装
// 引入axios
import axios from 'axios'
// 引入token
import {useUserStore} from '@/stores/userStore'
// 引入路由
// import { useRouter } from 'vue-router';
import router from '@/router';
// 创建axios实例
const httpInstance = axios.create({
    // 设置基地址
    baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net',
    //  设置超时时间
    timeout: 20000
})

4.添加请求拦截器

config参数
config 对象是由 Axios 库在内部创建并传递给拦截器函数的。当你使用 Axios 发起一个 HTTP 请求时,Axios 会根据你提供的请求配置选项(如 URL、方法、头信息等)创建一个 config 对象。这个对象包含了请求的所有必要信息。
添加响应拦截器并导出

// 拦截器
// 添加请求拦截器
httpInstance.interceptors.request.use(function (config) {
  const useStore=useUserStore()
    // 1.从pinia获取token数据
  const token=useStore.userInfo.token
    // 在发送请求之前做些什么
    //判断token是否存在
    if(token){
    //将token按照后端的要求拼接一下,并且加到请求头上面。
   config.headers.Authorization=`Bearer ${token}`
    }
    //将修改后的config返回出去
   return config;
  }, 
  //没有获取到token,返回错误
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

5.添加响应1拦截器

httpInstance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 拿到reponse之后可以对响应数据做一些操作
    return response;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    // 利用拦截器做了一个统一的配置,为什么要写在拦截器里面,因为有很多共同的操作会报错
    ElMessage({
      message:error.response.data.msg,
      type: 'warning',
    })
    // 401token失效处理
    const userStore=useUserStore()
    // 2.跳转到登录页
    if(error.response.status===401){
    // 1.清除本地用户数据
      userStore.clearUserInfo()
    // 2.跳转到登录页
      router.push('/login')
    }
    // 返回错误提示
    return Promise.reject(error);
  }); 
// 导出
export default httpInstance

6.封装请求API

// 获取详情接口,实例里面有请求拦截器,响应拦截器,超时时间,请求基地址。
import httpInstance from "@/utils/http";
export const getCheckoutInfoAPI = () => {
    return httpInstance({
      url:'/member/order/pre'
    })
  }
export const createOrderAPI=(data)=>{
return httpInstance({
  url:'/member/order',
  method:'POST',
  data
})
}

7.组件内使用

//引入相关发送请求的API
import {getCategoryFilterAPI,getSubCategoryAPI} from '@/apis/category.js'
import { onMounted} from 'vue'
// 获取面包屑导航数据
//创建容器
const categoryData=ref([])
const getCategoryData=async ()=>{
//调用API并传入参数
 const res=await getCategoryFilterAPI(route.params.id)
 categoryData.value=res.data.result
}
onMounted(()=>{
  getCategoryData() 
})

http://www.kler.cn/a/312678.html

相关文章:

  • HTML(超文本标记语言)
  • 从0开始机器学习--Day23--支持向量机
  • 鸿蒙华为商城APP案例
  • 前端入门一之ES6--面向对象、够着函数和原型、继承、ES5新增方法、函数进阶、严格模式、高阶函数、闭包
  • 第七部分:2. STM32之ADC实验--AD多通道(AD采集三路传感器模块实验:光敏传感器、热敏传感器、反射式传感器附赠温湿度传感器教程)
  • 文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点
  • web基础—dvwa靶场(十二)JavaScript Attacks
  • 从数据到资产:企业数据治理经济价值实现的策略框架
  • Dubbo SPI源码
  • Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
  • 新媒体运营
  • 非守护线程会阻止JVM的终止吗
  • 大联大诠鼎集团推出基于联咏科技、思特威和TDK产品的电子防抖(EIS)摄像头方案
  • 面试复盘与 AI 大模型学习
  • BitLocker硬盘加密的详细教程分享
  • 【简单点】docker如何部署tomcat
  • 3. Internet 协议的安全性
  • 1.4 计算机网络的性能指标
  • 【JAVA开源】基于Vue和SpringBoot的校园美食分享平台
  • Linux创建快捷命令
  • 经纬度计算距离方法
  • Git:版本控制工具介绍
  • 【busybox记录】【shell指令】timeout
  • Flink 与 Kubernetes (K8s)、YARN 和 Mesos集成对比
  • HarmonyOS元服务与卡片
  • 基于Vue 3组合函数的分页、搜索与排序实践 —— nbsaas-boot项目的实际应用