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

封装axios及简单应用举例

第一步:具体封装工具:

在项目根目录下创建utils目录,然后在其中创建文件http.js:

// 二次封装axios
import axios from 'axios'// 全局配置
// 根据环境变量区分接口默认地址(前缀)
switch (process.env.NODE_ENV) {case 'prod':axios.defaults.baseURL = 'http:/www.hcshow.online/blog'breakcase 'test':axios.defaults.baseURL = 'http://localhost/blog'breakdefault:// devaxios.defaults.baseURL = 'http://127.0.0.1/blog'
}
// 请求超时时间
axios.defaults.timeout = 6000// CROS跨域是否允许凭证
axios.defaults.withCredentials = true// axios.post默认情况下传递到后台的数据是JSON格式的
// 通过下面方式设置POST请求头,告诉服务器请求主体的数据格式:a=aaaa&b=bbbb
// 需要导入 import qs from 'qs'
// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
// axios.defaults.transformRequest = data => qs.stringify(data)// 请求拦截器:axios前置拦截
axios.interceptors.request.use(config => { // config指请求对象
// 通过axios请求拦截器添加token,保证拥有获取数据的权限const token = window.localStorage.getItem('token')if (token !== null) {config.headers.Authorization = token}return config
}, error => {// 如果拦截失败返回失败信息return Promise.reject(error)
})//   // 自定义响应成功的HTTP状态码(一般情况下用配置)
// // 设置什么才算成功,什么时候才算失败
// axios.defaults.validateStatus = status => {
//   // 默认大于等200小于300的才算成功
//   return /^(2|3)\d{2}$/.test(status) //设置2和3开头的都算成功
// }// 响应拦截器:axios后置拦截
axios.interceptors.response.use(res => {return res
}, error => {// 请求已发送,只不状态码不是200系列,设置不同状态码的不同处理if (error.response) { // 如果服务器有返回信息switch (error.response.status) {case 401: // 当前请求需要用户登录(一般是未登录)breakcase 403: // 服务器已经理解请求,但是拒绝执行它(一般是TOKEN过期)localStorage.removeItem('token')// 跳转的登录页面breakcase 404: // 请求失败,资源没有找到break}return Promise.reject(error.response)} else { // 如果服务器没有返回信息// 断网处理if (!window.navigator.onLine) {// 网络断开时,让其跳转到其它网页return}return Promise.reject(error)}
})export default axios

如果要使项目能够根据环境变量区分接口默认地址,需要在package.json中进行配置:

"scripts": {"serve": "vue-cli-service serve","comment1": "测试环境","serve:test": "set NODE_ENV=test&&vue-cli-service serve","comment1": "生产环境","serve:prod": "set NODE_ENV=prod&&vue-cli-service serve",
……
},

之后采用npm run serve:test会启动测试环境,此时对应的服务器连接根地址为:http://localhost/blog……

第二步:服务器代码

@GetMapping("/f11")
public String f11(Integer pageNum, Integer pageSize) {return pageNum + " : " + pageSize;
}
@PostMapping("/f21")
public String f21(@RequestBody String param) {return param;
}

第三步:API集中式管理

采用集中式管理API是为了便于管理接口。
在项目根目录下创建目录api,然后依次在其中创建user.js、blog.js、api.js:

  • user.js
import axios from '../utils/http'function login () {return axios.post('/f21', {data: {username: 'zhagnsan',password: '1234'}})
}export default {login
}
  • blog.js
import axios from '../utils/http'function getBlogsWithPage () {return axios.get('/f11', {params: {pageNum: 11,pageSize: 8}})
}export default {getBlogsWithPage
}
  • api.js:用来进行集中导入
// 定义数据请求的唯一入口
import user from './user'
import blog from './blog'export default {user,blog
}

第四步:在main.js文件中全局引入:

import api from './api/api'
Vue.prototype.$api = api

第五步:在vue页面中具体使用:

<template><div class="home"><button @click="getFun">发送get请求</button><button @click="postFun">发送post请求</button></div>
</template><script>export default {methods: {getFun () {this.$api.blog.getBlogsWithPage().then(res => {console.log(res)})},postFun () {this.$api.user.login().then(res => {console.log(res)})}}}
</script>

启动项目测试

相关文章:

封装axios及简单应用举例

第一步&#xff1a;具体封装工具&#xff1a; 在项目根目录下创建utils目录&#xff0c;然后在其中创建文件http.js&#xff1a; // 二次封装axios import axios from axios// 全局配置 // 根据环境变量区分接口默认地址&#xff08;前缀&#xff09; switch (process.env.NO…...

Django(3)-创建第一个数据模型-ORM映射

数据库配置 根目录下settings.py 。这是个包含了 Django 项目设置的 Python 模块。 通常&#xff0c;这个配置文件使用 SQLite 作为默认数据库。如果你不熟悉数据库&#xff0c;或者只是想尝试下 Django&#xff0c;这是最简单的选择。Python 内置 SQLite&#xff0c;所以你无…...

C++ vector

前言&#xff1a; vector的部分源码&#xff1a; &#xff08;做过删除&#xff0c;留下关键信息&#xff09; vector的使用 构造函数&#xff1a; 1 无参构造 vector<int> v1; 2 构造并初始化n个val vector<int> v2(5,1);3 拷贝构造 vector<int> v3…...

Spring+redis集成redis缓存

1、引入maven依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.0</version></dependency><dependency><groupId>org.springframework.data</groupId><art…...

聊聊springboot的启动事件

序 本文主要研究一下springboot的启动事件 SpringApplicationEvent org/springframework/boot/context/event/SpringApplicationEvent.java public abstract class SpringApplicationEvent extends ApplicationEvent {private final String[] args;public SpringApplicatio…...

jmeter HTTP请求默认值

首先&#xff0c;打开JMeter并创建一个新的测试计划。 右键单击测试计划&#xff0c;选择"添加" > “配置元件” > “HTTP请求默认值”。 在HTTP请求默认值中&#xff0c;您可以设置全局的HTTP请求属性&#xff0c;例如&#xff1a; 服务器地址&#xff1a…...

CSS选择器-CSS3属性

CSS选择器-CSS3属性 持续更新… 1、CSS3的概念和优势 css3概念:是css的升级版本,新增加了一些模块 css3优点:完全向后兼容,可使用新的选择器和属性,能实现新的设计效果CSS3是CSS技术的升级版本&#xff0c;CSS3语言开发是朝着模块化发展的。以前的规范作为一个模块实在是太庞…...

线性代数的学习和整理8:行列式相关

目录 1 从2元一次方程组求解说起 1.1 直接用方程组消元法求解 1.2 有没有其他方法呢&#xff1f;有&#xff1a;比如2阶行列式方法 1.3 3阶行列式 2 行列式的定义 2.1 矩阵里的方阵 2.2 行列式定义&#xff1a;返回值为标量的一个函数 2.3 行列式的计算公式 2.4 克拉…...

java+springboot+mysql农业园区管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的农业园区管理系统&#xff0c;系统包含超级管理员、管理员、用户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;用户管理&#xff1b;土地管理&#xff08;租赁&#xff09;&#x…...

IDEA远程开发

IDEA远程开发 前期准备 IDEA的远程开发是在本地去操昨远程服务器上的代码&#xff0c;所以我们先需要准备一台服务器,在此我使用vmware虚拟出ubuntu-20.04.6的Server版本,以便后面演示。 Ubuntu的Java环境配置 JDK8 sudo apt install openjdk-8-jdkmaven sudo apt instal…...

Redis 工作总结

1.Redis是什么 Redis是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是Remote Dictionary Service的首字母缩写&#xff0c;也就是远程字典服务。 2.Redis的用途&#xff1f; 2.1 计数器 2.2 缓存 2.3 分布式锁 2.4 消息中间件 3.Redis的数据类型 3.1 string&am…...

GO学习之 数据库(Redis)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

谈一谈浏览器与Node.js中的JavaScript事件循环,宏任务与微任务机制

JavaScript中的异步代码 JavaScript是一个单线程非阻塞的脚本语言。这代表代码是执行在一个主线程上面的。但是JavaScript中有很多耗时的异步操作&#xff0c;例如AJAX&#xff0c;setTimeout等等&#xff1b;也有很多事件&#xff0c;例如用户触发的点击事件&#xff0c;鼠标…...

User Java bean的命名规范

Java Bean 是一种用于表示简单的、可重用的组件的规范。它是一个符合特定命名和约定的 Java 类&#xff0c;通常用于封装数据和提供访问方法。以下是关于 Java Bean 命名规范的一些准则&#xff1a; 类名&#xff1a; 类名应该使用驼峰命名法&#xff08;Camel Case&#xff09…...

ajax和fetch的区别

ajax 和 fetch的相同点和区别是什么&#xff1f; 以前我们都用ajax去做请求&#xff0c; 但是原生的ajax不好用&#xff0c;我们会用$.ajax或者axios插件去请求&#xff0c;他们都是ajax的封装 最近出来个fetch是什么&#xff1f; 问到这里的时候&#xff0c;你就已经入坑了&am…...

java+springboot+mysql村务档案管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的村务档案管理系统&#xff0c;系统包含超级管理员、工作人员角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;系统用户管理&#xff08;工作人员管理&#xff09;&#xff1b;公开资料&#xff1b;会议记录&…...

windows查看/删除DNS缓存

一、查看DNS缓存 打开CMD&#xff0c;输入ipconfig/displaydns 二、删除DNS缓存 打开CMD,输入ipconfig/flushdns...

自动化测试之Junit

Junit引入注解参数化单参数多参数方法传参 测试用例执行顺序断言测试套件 Junit引入 Junit来编写和组织自动化测试用例&#xff0c;使用Selenium来实际模拟用户与Web应用程序的交互。也就是使用JUnit的测试功能来管理和运行Selenium测试。常见的做法是&#xff0c;使用JUnit作…...

Spring Boot 整合MyBatis-Plus

&#x1f600;前言 本篇博文是关于Spring Boot 整合MyBatis-Plus的&#xff0c;希望你能够喜欢&#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的…...

CC++ 常用技巧

C 中的C C 是面向过程的是把整个大程序分为一个个的子函数&#xff1b;C 是面向对象的是把整个程序划分为一个个的类。C 是完全兼容C 的&#xff0c;C 是C 的子集&#xff0c;C 是C 的超集。C 又对C 做了很多补充和提升&#xff0c;因此使用C 会比使用纯C 更方便。混用C和C&am…...

Stitches项目架构分析:RequireJS模块化设计与Grunt构建流程完全指南 [特殊字符]

Stitches项目架构分析&#xff1a;RequireJS模块化设计与Grunt构建流程完全指南 &#x1f680; 【免费下载链接】stitches HTML5 Sprite Sheet Generator 项目地址: https://gitcode.com/gh_mirrors/sti/stitches Stitches是一个基于HTML5的雪碧图生成器&#xff0c;它采…...

2026在线测评系统十大量表对比:信效度与场景全解析

【30s 核心摘要】2026 年在线测评成人才管理刚需&#xff0c;信效度与场景适配成选型核心。本文聚焦十大量表&#xff0c;从信度、效度、适配场景等维度深度对比&#xff0c;重点解析问卷星、北森、金数据等主流平台的量表能力与落地效果&#xff0c;为企业、高校及机构提供科学…...

WPF虚拟桌宠组件:可嵌入、高性能、工程化UI生命体

1. 这不是“桌面宠物”&#xff0c;而是一个可嵌入的WPF UI组件化生命体你可能在Windows XP时代见过那只晃着尾巴、偶尔打哈欠的3D小猫&#xff0c;也可能在Win10系统托盘里点开过一个会眨眼的像素狐狸——但那些是独立进程、是系统级小工具、是“看一眼就关掉”的轻量娱乐。而…...

终极指南:用D2DX让《暗黑破坏神2》在现代电脑上焕发新生

终极指南&#xff1a;用D2DX让《暗黑破坏神2》在现代电脑上焕发新生 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 还在为经…...

Hermes Agent 框架如何对接 Taotoken 作为自定义模型供应商并配置环境变量

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Hermes Agent 框架如何对接 Taotoken 作为自定义模型供应商并配置环境变量 Hermes Agent 是一个流行的 AI 代理开发框架&#xff0…...

当B站字幕不再只是弹幕:你的个人学习宝库解锁指南

当B站字幕不再只是弹幕&#xff1a;你的个人学习宝库解锁指南 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还记得那个深夜吗&#xff1f;你正在B站追着某个技术…...

3步搞定B站缓存视频转换:m4s转MP4的终极解决方案

3步搞定B站缓存视频转换&#xff1a;m4s转MP4的终极解决方案 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了珍贵的视频&a…...

Actor Framework里的“多米诺骨牌”:一个错误如何让整个嵌套操作者链崩溃?

Actor Framework中的“多米诺效应”&#xff1a;如何避免嵌套操作者链的崩溃 在分布式系统设计中&#xff0c;Actor模型因其天然的并发处理能力而备受青睐。LabVIEW的Actor Framework(AF)通过操作者(actor)的嵌套结构&#xff0c;为复杂系统提供了模块化解决方案。然而&#x…...

从Stable Diffusion到DiT:为什么说Transformer是扩散模型的下一站?

从Stable Diffusion到DiT&#xff1a;Transformer如何重塑扩散模型的未来 在图像生成领域&#xff0c;扩散模型正经历着从U-Net架构向Transformer架构的范式转移。这一转变不仅仅是技术组件的简单替换&#xff0c;而是代表着生成式AI在可扩展性、训练效率和模型容量方面的重大突…...

终极指南:如何用Hindsight为聊天机器人添加长期记忆功能

终极指南&#xff1a;如何用Hindsight为聊天机器人添加长期记忆功能 【免费下载链接】hindsight Hindsight: Agent Memory That Learns 项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight Hindsight是一个革命性的AI代理记忆系统&#xff0c;专门为聊…...