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

axios二次封装

一.Axios介绍

axios是一个promise实现的http库,符合最新的ES规范。要用这个东西主要有以下几个原因:

  • 从浏览器中创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 支持 Promise API(可以配合ES7的async await使用,解决回调地狱)
  • 客户端支持防止CSRF
  • 提供了一些并发请求的接口
  • 轻量,体积小

二.使用步骤

在src文件夹下的common文件夹新建api文件夹,里面新建request.js文件

先导入axios和安装qs包

qs是一个增加了一些安全性的查询字符串解析和序列化字符串的库。

1.在项目中使用命令行工具输入:npm install qs

2.安装完成后在需要用到的组件中:import qs from 'qs’

3.在main.js中全局引入:Vue.prototype.$qs = qs

4.转换:qs.stringify(data)

1.request.js写法

import axios from "axios"; //带三方类库 import qs from 'qs' // 配置不同环境下,调用不同接口 switch(process.env.NODE_ENV){ // 生产环境,部署到服务器上的环境 case 'production': axios.defaults.baseURL='http://api.zhengqinan.cn'; break; //设置测式环境的接口地址 case 'text': axios.defaults.baseURL='http://api.zhengqinantext.cn'; break; //开发环境接口地址 default: axios.defaults.baseURL='http://api.kaifa.cn' } /** * 设置超时时间和跨域是否允许携带凭证 */ axios.defaults.timeout=10000 //设置十秒 axios.defaults.withCredentials=true ;//例如:登录校验session和cookie /** * 设置请求数据参数传递的格式,默认是json格式,但是在登录校验中后台一般设置请求格式:x-www-form-urlencoded(name=xxx,age=xxx) * 看服务器要求什么格式 */ axios.defaults.headers['Content-Type']='application/x-www-form-urlencoded' //声明请求格式 axios.defaults.transformRequest=data=>qs.stringify(data) //qs是第三方库,转换为x-www-form-urlencoded /** * 设置请求拦截器:----在项目中发请求(请求没有发出去)可以做一些事情 * 客户端->[请求拦截器]->服务器端 * token校验(JWT):接收到服务器的token,存储到vuex/本地存储中,每次向服务器发送请求,我们应该把token带上 * config :发起请求的请求配置项 */ axios.interceptors.request.use(config=>{ let token=localStorage.getItem('token') token && (config.headers.Authoriztion=token) return config },error=>{ return Promise.reject(error) }) /** * 设置响应拦截器 * 服务器端返回信息->[响应拦截器]->客户端js获取到信息 * response中包含属性: * data:相应数据,status:响应状态码,statusText:响应状态信息,headers:响应头,config:响应提供的配置信息,request */ axios.interceptors.response.use(response=>{ return response.data //将主体内容返回 axios.get().then(result=>{拿到的就是响应主体}) },error=>{ let { response}=error // 如果有返回结果 if(response){ switch(response.status){ //这里面根据公司需求进行写 case 404: //进行错误跳转之类 break; } }else{ //服务器没有返回结果 分两种情况 断网 服务器崩了 if(!window.navigator.onLine){ //断网处理:跳转到断网页面 return } return Promise.reject(error) } })

2.创建接口文件在api文件夹下新建文件夹login,再新建login.js文件

import axiosHttp from './request.js' export const getuserinfor=(params)=>{ return axiosHttp({ method:'get', url:'user/xxxx', params }) }; export const login=(data)=>{ return axiosHttp({ method:'post', url:'login/xxxxx', data, }) }

3.使用

<template></template> <script> import { login } from "../api/login/login.js"; export default { data() { return {}; }, methods: { async getlogin() { let params = { emile: 123, name: "zhangsna", }; let data = await login(params); }, }, }; </script> <style> </style>
http://www.jsqmd.com/news/531810/

相关文章:

  • Mermaid:用文本构建专业图表的开源工具解决方案
  • VisionPro工业相机硬触发实战:从接线到C#代码实现的完整流程
  • 隔离电源设计避坑指南:VPS8504B/C的0.1Ω功率管如何避免偏磁问题
  • 蓝桥杯物联网竞赛_STM32L071_10_温度传感器扩展模块
  • flash-attention代码逻辑
  • 基于S7-200 PLC与MCGS组态的灌装贴标生产线系统:后发送产品包括梯形图接线图原理图及...
  • FreeRTOS实战:用CubeMX在STM32上模拟一个智能家居控制面板(任务通知+事件标志组)
  • 蓝桥杯物联网竞赛_STM32L071_2_继电器控制
  • 2025-2026年高新技术企业认定公司推荐:集团企业多主体申报口碑服务商对比 - 品牌推荐
  • 从散乱点到完美圆:最小二乘法圆拟合在工业视觉检测中的实战应用(Python/OpenCV版)
  • MixFormer vs FairMOT:深度对比两种目标跟踪方案的性能与适用场景
  • 串口通信中浮点数据的共用体与结构体转换技术
  • 如何快速部署ChatFiles:面向新手的文档聊天机器人完整指南
  • 2026成都隔油池清掏优质服务机构推荐:成都隔油池清理公司/物业化粪池清掏/物业隔油池清掏/酒店隔油池清掏/隔油池清理维保公司/选择指南 - 优质品牌商家
  • 从零构建XSS接收平台:实战打Cookie与深度防御剖析
  • Gemini vs Grok镜像站技术拆解对比:视觉派与实时派的正面交锋
  • 深度学习模型压缩终极指南:TinyDNN剪枝、量化、蒸馏实战
  • 突破STM32内存限制:用SRAM动态分配大数组的3种方法(含__attribute__语法对比)
  • Spring开发系列教程(12)——AOP避坑指南
  • Qwen3-Reranker-0.6B在VSCode中的开发与调试
  • 打破设备壁垒:Win/Mac/Linux三端虚拟局域网组网全攻略,解锁跨设备协作新范式
  • 2026年高新技术企业认定公司推荐:初创公司资质提升口碑机构及用户真实反馈 - 品牌推荐
  • 如何判断Tclsh是32位还是64位的
  • jsDelivr数据库性能优化终极指南:10个提升CDN查询速度的技巧
  • granite-4.0-h-350m中文微调指南:Ollama本地大模型定制化训练教程
  • Vibe Coding,是怎么「玩废」程序员的?
  • OpenClaw配置优化:百川2-13B量化模型推理速度提升30%技巧
  • 从零到一:在Cursor与VSCode中深度集成DeepSeek的实战手册
  • 2026年AI营销智能体公司推荐:企业品牌增长困境下高价值智能决策与内容生成服务商 - 品牌推荐
  • 智能投资决策系统:从市场混沌到决策清晰的技术革命