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

vue 后台管理 之 axios使用及接口拦截响应等

开心是一天,不开心也是一天

文章目录

  • 一、 什么是axios?
  • 二、使用 axios
  • 三、拦截器的使用
  • 四、二次封装 get / post 等请求


一、 什么是axios?

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中

  • 从浏览器中创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 数据
  • 客户端支持防御 XSRF

网址: https://www.javasoho.com/axios/index.html#axios-request-config

二、使用 axios

1. 安装

npm install axios

2. 定义

  • 这是定义的一个简易版 js 文件,把 axios 引入进来

import axios from "axios"const service = axios.create({baseURL:import.meta.env.VITE_APP_BASE_API,
})// 添加请求拦截器
service.interceptors.request.use(function (config) {// 成功的请求前return config;}, function (error) {// 请求错误前return Promise.reject(error);});// 添加响应拦截器
service.interceptors.response.use(function (response) {// 响应成功前return response;}, function (error) {// 响应错误前return Promise.reject(error);})export default service
  • 使用 get / post 等请求

import axios from "~/axios" // 更改axios文件路径嗷
export function getConfig(){return axios.get(`/admin/distribution_setting/get`)
}export function setConfig(data){return axios.post(`/admin/distribution_setting/set`,data)
}

三、拦截器的使用

  • 为了方便处理数据,在接口请求前后我们会做一些操作处理
  • 比如在接口请求前,会使用请求拦截器 在每个header 头添加token
  • 在接口响应后,会使用响应拦截器 对响应数据处理一下再返回

四、二次封装 get / post 等请求


默认情况下,axios将JavaScript对象序列化为JSON。 要以application / x-www-form-urlencoded格式发送数据,可以使用 qs 库转换,使用前需要安装 qs

import axios from "axios"
import QS from 'qs';const $get = (url, params) => {return new Promise((resolve, reject) => {axios.get(url, {params: params,}).then(res => {resolve(res.data);}).catch(err => {reject(err.data)})});
}const $post = (url, params) => {return new Promise((resolve, reject) => {// QS.stringify(params) 是将对象 序列化成URL的形式,以&进行拼接axios.post(url, QS.stringify(params)) .then(res => {resolve(res.data);}).catch(err => {reject(err.data)})});
}
// Post2 数据格式不用转化,且可以指定头部信息
const $post2 = (url, params, type) => {return new Promise((resolve, reject) => {axios.post(url, params, type).then(res => {resolve(res.data);}).catch(err => {reject(err.data)})});
}
//下面是vue3必须加的,vue2不需要,只需要暴露出去get,post方法就可以
export default {install: (app) => {app.config.globalProperties['$get'] = $get;app.config.globalProperties['$post'] = $post;app.config.globalProperties['$post2'] = $post2;app.config.globalProperties['$axios'] = axios;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于神经网络逆同步控制方法的两变频调速电机控制系统matlab仿真
  • Linux git安装与部署
  • 服务器数据恢复—IBM服务器raid5阵列硬盘出现坏道的数据恢复案例
  • 服务器上部署服务
  • Revite二次开发_使用WPF和WebView2制作一个访问网站的窗口
  • pygame游戏开发系列教程(1)
  • C++数组入门
  • Python知识点:如何使用Boto3进行AWS服务管理
  • Electron 集成 Express + p-limit + SQlite WAL读写模式解决并发锁库的问题
  • OpenCV Python 图像处理入门
  • 11.怎么做好一个动态标签页
  • 设计模式21-组合模式
  • P37-数据存储
  • 数据可视化:解锁数据奥秘的钥匙与实战指南
  • 力扣每日一题 特殊数组 II 前缀和
  • __proto__ 和 prototype的关系
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 0x05 Python数据分析,Anaconda八斩刀
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Docker: 容器互访的三种方式
  • FineReport中如何实现自动滚屏效果
  • JAVA之继承和多态
  • JSDuck 与 AngularJS 融合技巧
  • Js基础知识(一) - 变量
  • Laravel 中的一个后期静态绑定
  • MySQL-事务管理(基础)
  • Python实现BT种子转化为磁力链接【实战】
  • SQLServer插入数据
  • sublime配置文件
  • uva 10370 Above Average
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前嗅ForeSpider采集配置界面介绍
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 系统认识JavaScript正则表达式
  • 详解NodeJs流之一
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​力扣解法汇总946-验证栈序列
  • #if等命令的学习
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)Nginx简介和安装教程
  • (4)事件处理——(7)简单事件(Simple events)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (七)glDrawArry绘制
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (转)fock函数详解
  • (转)linux下的时间函数使用
  • (转)Sublime Text3配置Lua运行环境
  • (轉)JSON.stringify 语法实例讲解
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .md即markdown文件的基本常用编写语法