axios二次封装

server/2024/9/24 16:31:10/

axios的使用以及二次封装

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

一:axios的使用

1.下载

javascript">npm i axios -S

2.引入

javascript">import axios from 'axios'

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

二:vue中的二次封装

1.终端下载

javascript">npm i axios -S

2.main.js中引入

javascript">import axios from "axios";

3.封装axios实例–http.js

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

javascript">// 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 对象。这个对象包含了请求的所有必要信息。
添加响应拦截器并导出

javascript">// 拦截器
// 添加请求拦截器
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拦截器

javascript">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

javascript">// 获取详情接口,实例里面有请求拦截器,响应拦截器,超时时间,请求基地址。
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.组件内使用

javascript">//引入相关发送请求的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.ppmy.cn/server/119565.html

相关文章

Android 内置应用裁剪

文章目录 查询目标 APK 的 Android.mk(或 Android.bp)文件apk裁剪方式1.注释或删除.mk/.bp文件2.将 APK 名称加入“OVERRIDES”配置项中3.自定义“PRODUCT_PACKAGES_REMOVE”配置项 查询目标 APK 的 Android.mk(或 Android.bp)文件…

后端开发刷题 | 数字字符串转化成IP地址

描述 现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。 例如: 给出的字符串为"25525522135", 返回["255.255.22.135", "255.255.221.35"]. (顺序没有关系) 数据范围&…

【Python决策树】ID3方法建立决策树为字典格式,并调用 treelib 显示

首先,我们使用 treelib 库来显示树结构 : ps : 如果 treelib 输出一堆乱码, 可以点进Tree修改 tree.py 大概 930 行左右的部分(去掉encode就行了) if stdout:print(self._reader) # print(self._reader.encode("utf-8"))else:return self._reader将字典…

职场 Death Note

场景一 测试:哎,怎么会这样呢?时间没到,他怎么就变成这个样子了呢?一副大惊小怪,整个办公室都是他的声音 开发:对对对,我代码问题,别BB了。 你直接说这个地方不对&#…

大数据概念与价值

文章目录 引言大数据的概念高德纳咨询公司的定义麦肯锡全球研究所的定义什么是大数据? 大数据的特征Volume(体积)Variety(种类)Velocity(速度)Value(价值)Veracity&#…

Nginx 文件名逻辑漏洞(CVE-2013-4547)

漏洞原理: 文件解析漏洞的主要原因是错误的解析了请求的URI🙅,错误的获取用户请求的文件名,将其他格式的文件当作php文件解析,导致出现权限绕过、代码执行。 在CVE-2013-4547漏洞中,通常会有下面类似的配…

opengl-redbook环境搭建(静态库)

所需库下载 gl3w(github地址)https://github.com/skaslev/gl3w 使用python3执行根目录下的gen脚本,会生成头文件include文件夹和src下gl3w.c文件。 glfw(github地址)https://github.com/glfw/glfw 本文项目结构 本文如红宝书一致,将glfw和gl3w引入…

Gitlab学习(007 gitlab项目操作)

尚硅谷2024最新Git企业实战教程,全方位学习git与gitlab 总时长 5:42:00 共40P 此文章包含第25p-第p26的内容 文章目录 推送项目到gitlabidea安装gitlab插件配置免密登录推送项目到远程库 在gitlab上创建项目额外功能的使用推送分支到远程库标记功能创建合并请求 推…