【H2O2 | 软件开发】Axios发送Http请求

devtools/2025/3/14 9:45:02/

目录

前言

开篇语

准备工作

正文

概念

封装工具包

示例

结束语


前言

开篇语

本系列为短篇,每次讲述少量知识点,无需一次性灌输太多的新知识点。该主题文章主要是围绕前端、全栈开发相关面试常见问题撰写的,希望对诸位有所帮助。

如果您需要为面试八股文做准备,笔者建议重点关注加粗强调部分,它们是概念中的关键词。

准备工作

软件:【参考版本】Visual Studio Code

第三方js库(框架):【参考版本】Vue3,Axios(ver1.7.9)

搭建工具:Vite

系统版本: Win10/11

正文

概念

为了实现前后端交互,在前端我们需要向后端接口发送http请求,并根据反馈的结果进行数据的渲染。在Vue3中,我们可以使用第三方库Axios实现这一功能。

Axios是一个基于Promisehttp客户端,用于浏览器和 Node.js 环境。它提供了简单易用的API,用于发送http请求并处理响应。它提供了请求拦截器响应拦截器,可以在请求发送前或响应到达后对其进行处理,如添加认证头、处理错误等。此外,Axios会自动将请求和响应的JSON数据转换为JavaScript对象,无需手动解析。

本文中的开发环境为Windows10,使用npm安装Axios

封装工具包

对于项目开发来说,发送Http是一种非常常见的需求,因此我们可以将发送请求的共同代码封装为工具包,以降低代码冗余度,同时方便开发。

新建一个utils工具包(如果没有创建的话),新建两个js文件——http.jspostApi.js

http.js中,添加如下代码——

import axios from "axios";const instance = axios.create({timeout: 3000,headers: { "X-Custom-Header": "foobar" },
});// 添加请求拦截器
instance.interceptors.request.use(function (config) {// 在发送请求之前做些什么return config;},function (error) {// 对请求错误做些什么return Promise.reject(error);}
);// 添加响应拦截器
instance.interceptors.response.use(function (response) {// 对响应数据做点什么return response.data;},function (error) {// 对响应错误做点什么return Promise.reject(error);}
);export default instance;

然后,在postApi.js中,添加如下的代码——

import http from "@/utils/http"export const postApi = (routePath, params = null) => {// 接口路径添加/api以配置跨域,根据后端给的接口来const path = '/api' + routePath;if (params != null) {// 需要FormData类型数据作为参数const formData = new FormData();Object.entries(params).forEach(([key, value]) => {formData.append(key, value)})return http.post(path, formData)} else {// 不需要参数return http.post(path)}
}

这里演示的是发送post请求的方式,如果需要发送get请求,则可以类比使用http.get(path)。

示例

在项目中,一个实际的发送Axios的示例如下——

const handleLogin = () => {formLogin.value.validate().then(async () => {try {// 向登录接口发送登录请求信息const res = await postApi('/login', data.user);if (res.code == 200) {ElMessage({message: '登录成功',type: 'success',duration: 1000});setTimeout(async () => {// 解构用户信息并存储const { userId, userName, superAdmin, menuList, permissionCodeList } = res.data;const user = { userId, userName, superAdmin };await store.dispatch('setUserAction', { user, menuList, permissionCodeList });// 跳转主页if (menuList.length > 0) {router.push("/main");}}, 1200);} else {// 返回登录失败信息ElMessage.error(res.info);// 重新获取验证码data.src = '/api/checkCode?' + (Math.random().toString().replace(".", ""));data.user.checkCode = "";}} catch (err) {ElMessage.error(err);}}).catch(err => {ElMessage.error(JSON.stringify(err));})
}

该示例结合了Element-Plus组件,简单实现了发送用户账户密码信息完成登录请求的功能。

结束语

本期内容到此结束。关于本系列的其他博客,可以查看我的面试题专栏。

本系列的博客主要是记录学习经历,并总结阶段的知识点。全篇的操作过程由笔者完成并核验,在部分定义上有参考其他的内容。希望这对您有所帮助,并真心地祝您早日找到心仪的工作岗位。

==期待与你在下一期博客中再次相遇==

——分解的【H2O2】


http://www.ppmy.cn/devtools/166991.html

相关文章

iPaaS集成平台轻量化架构的重要性

在数字化转型的浪潮中,企业对于高效、灵活、可扩展的集成平台的需求日益增长。iPaaS(集成平台即服务)作为云计算领域的创新解决方案,正逐渐成为企业解决集成难题的首选。而在这其中,轻量化架构成为了iPaaS集成平台的核…

【存储中间件】Redis核心技术与实战(一):Redis入门与应用(常用数据结构:字符串String、哈希Hash、列表List)

文章目录 Redis入门与应用Redis常用数据结构字符串(String)操作命令set 设置值get 获取值mset 批量设置值mget 批量获取值Incr 数字运算append追加指令strlen 字符串长度getset 设置并返回原值setrange 设置指定位置的字符getrange 截取字符串 命令的时间…

JVM垃圾收集器合集

前言:JVM GC收集器的回顾与比较 JVM(Java虚拟机)中的垃圾收集器是自动管理内存的重要机制,旨在回收不再使用的对象所占用的内存空间。以下是JVM中几种常见的垃圾收集器的详细介绍: 一、新生代垃圾收集器 1.Serial收集…

【Crypto】CTF 密码学题目解题思路图

CTF密码学题目解题思路图 密码学题目 ├── 1. 编码/转换 │ ├── 1.1 Base64 │ │ └── 步骤:检查填充字符(),解码工具(CyberChef)。 │ ├── 1.2 Hex │ │ └── 步骤&#xff1a…

C++蓝桥杯基础篇(十一)

片头 嗨~小伙伴们,大家好!今天我们来学习C蓝桥杯基础篇(十一),学习类,结构体,指针相关知识,准备好了吗?咱们开始咯~ 一、类与结构体 类的定义:在C中&#x…

打造流畅的下拉刷新与轮播交互:HarmonyOS手势识别与组件协同实战

打造流畅的下拉刷新与轮播交互:HarmonyOS手势识别与组件协同实战 在现代移动应用开发中,流畅且自然的交互体验是提升用户满意度的关键因素之一。下拉刷新和轮播组件是许多应用中常见的功能,但如何让它们在手势操作中无缝协同工作&#xff0c…

智能三防手持终端破解传统仓储效率困局

在数字化浪潮的推动下,传统仓储管理模式正面临效率低、成本高、错误频发等瓶颈。如何实现精准、高效、智能化的仓储管理,上海岳冉三防智能手持终端机以RFID技术为核心,结合工业级三防(防水、防摔、防尘)设计&#xff0…

内检实验室lims系统在电子设备制造行业的应用

在电子设备制造行业,内检实验室LIMS(实验室信息管理系统)的应用正变得日益重要。随着技术的不断进步和行业标准的提高,传统的手工记录和管理方式已难以满足现代电子制造业的需求。LIMS系统通过整合多种功能和技术,为电…