07.axios封装实例
一.简易axios封装-获取省份列表
1. 需求:基于 Promise 和 XHR 封装 myAxios 函数,获取省份列表展示到页面

2. 核心语法:
function myAxios(config) {return new Promise((resolve, reject) => {// XHR 请求// 调用成功/失败的处理程序})
}myAxios({url: '目标资源地址'
}).then(result => {}).catch(error => {})
3. 步骤:
- 定义 myAxios 函数,接收配置对象,返回 Promise 对象
- 发起 XHR 请求,默认请求方法为 GET
- 调用成功/失败的处理程序
- 使用 myAxios 函数,获取省份列表展示
4. 核心代码如下:
/*** 目标:封装_简易axios函数_获取省份列表* 1. 定义myAxios函数,接收配置对象,返回Promise对象* 2. 发起XHR请求,默认请求方法为GET* 3. 调用成功/失败的处理程序* 4. 使用myAxios函数,获取省份列表展示
*/
// 1. 定义myAxios函数,接收配置对象,返回Promise对象
function myAxios(config) {return new Promise((resolve, reject) => {// 2. 发起XHR请求,默认请求方法为GETconst xhr = new XMLHttpRequest()xhr.open(config.method || 'GET', config.url)xhr.addEventListener('loadend', () => {// 3. 调用成功/失败的处理程序if (xhr.status >= 200 && xhr.status < 300) {resolve(JSON.parse(xhr.response))} else {reject(new Error(xhr.response))}})xhr.send()})
}// 4. 使用myAxios函数,获取省份列表展示
myAxios({url: 'http://hmajax.itheima.net/api/province'
}).then(result => {console.log(result)document.querySelector('.my-p').innerHTML = result.list.join('<br>')
}).catch(error => {console.log(error)document.querySelector('.my-p').innerHTML = error.message
})
二.简易axios封装-获取地区列表
1. 需求:
在上个封装的建议 axios 函数基础上,修改代码支持传递查询参数功能
2. 修改步骤:
- myAxios 函数调用后,判断 params 选项
- 基于 URLSearchParams 转换查询参数字符串
- 使用自己封装的 myAxios 函数显示地区列表
3. 核心代码:
function myAxios(config) {return new Promise((resolve, reject) => {const xhr = new XMLHttpRequest()// 1. 判断有params选项,携带查询参数if (config.params) {// 2. 使用URLSearchParams转换,并携带到url上const paramsObj = new URLSearchParams(config.params)const queryString = paramsObj.toString()// 把查询参数字符串,拼接在url?后面config.url += `?${queryString}`}xhr.open(config.method || 'GET', config.url)xhr.addEventListener('loadend', () => {if (xhr.status >= 200 && xhr.status < 300) {resolve(JSON.parse(xhr.response))} else {reject(new Error(xhr.response))}})xhr.send()})
}// 3. 使用myAxios函数,获取地区列表
myAxios({url: 'http://hmajax.itheima.net/api/area',params: {pname: '辽宁省',cname: '大连市'}
}).then(result => {console.log(result)document.querySelector('.my-p').innerHTML = result.list.join('<br>')
})
三.封装_简易axios-注册用户
1. 需求:
修改 myAxios 函数支持传递请求体数据,完成注册用户功能
2. 修改步骤:
- myAxios 函数调用后,判断 data 选项
- 转换数据类型,在 send 方法中发送
- 使用自己封装的 myAxios 函数完成注册用户功能
3. 核心代码:
function myAxios(config) {return new Promise((resolve, reject) => {const xhr = new XMLHttpRequest()if (config.params) {const paramsObj = new URLSearchParams(config.params)const queryString = paramsObj.toString()config.url += `?${queryString}`}xhr.open(config.method || 'GET', config.url)xhr.addEventListener('loadend', () => {if (xhr.status >= 200 && xhr.status < 300) {resolve(JSON.parse(xhr.response))} else {reject(new Error(xhr.response))}})// 1. 判断有data选项,携带请求体if (config.data) {// 2. 转换数据类型,在send中发送const jsonStr = JSON.stringify(config.data)xhr.setRequestHeader('Content-Type', 'application/json')xhr.send(jsonStr)} else {// 如果没有请求体数据,正常的发起请求xhr.send()}})
}document.querySelector('.reg-btn').addEventListener('click', () => {// 3. 使用myAxios函数,完成注册用户myAxios({url: 'http://hmajax.itheima.net/api/register',method: 'POST',data: {username: 'itheima999',password: '666666'}}).then(result => {console.log(result)}).catch(error => {console.dir(error)})
})
小结
1. 自己封装的 myAxios 如何设置默认请求方法 GET?
config.method 判断有值就用,无值用‘GET’方法
2. 外面传入查询参数对象,myAxios 函数内如何转查询参数字符串?
使用 URLSearchParams 对象转换
3. 外面传入 data 选项,myAxios 函数内如何携带请求体参数?
判断外面传入了这个属性,自己转成 JSON 字符串并设置请求头并在 send 方法中携带
相关文章:
07.axios封装实例
一.简易axios封装-获取省份列表 1. 需求:基于 Promise 和 XHR 封装 myAxios 函数,获取省份列表展示到页面 2. 核心语法: function myAxios(config) {return new Promise((resolve, reject) > {// XHR 请求// 调用成功/失败的处理程序}) …...
【Linux】第四十一站:线程控制
一、Linux线程VS进程 1.进程和线程 进程是资源分配的基本单位线程是调度的基本单位线程共享进程数据,但也拥有自己的一部分数据:线程ID一组寄存器(上下文)栈errno信号屏蔽字调度优先级 2.进程的多个线程共享 同一地址空间,因此Text Segment、…...
ChatGPT提示词工程:prompt和chatbot
ChatGPT Prompt Engineering for Developers 本文是 https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/ 这门课程的学习笔记。 ChatGPT提示词工程:prompt和chatbot 文章目录 ChatGPT Prompt Engineering for DevelopersWhat …...
java算法
常见的七种查找算法: 数据结构是数据存储的方式,算法是数据计算的方式。所以在开发中,算法和数据结构息息相关。 1. 基本查找 也叫做顺序查找 说明:顺序查找适合于存储结构为数组或者链表。 基本思想:顺序查找也称…...
铭文资产是比特币生态破局者 or 短暂热点?
比特币作为加密货币的鼻祖,一直以来都扮演着数字资产市场的引领者角色。最近几年,随着 BRC20 项目的兴起,我们看到了更多与比特币相互关联的创新。在比特币生态中,BRC20 项目不仅仅是数字资产的代表,更是一种对于区块链…...
Java基础 - 8 - 算法、正则表达式、异常
一. 算法 什么是算法? 解决某个实际问题的过程和方法 学习算法的技巧? 先搞清楚算法的流程,再直接去推敲如何写算法 1.1 排序算法 1.1.1 冒泡排序 每次从数组中找出最大值放在数组的后面去 public class demo {public static void main(S…...
gRPC-第二代rpc服务
在如今云原生技术的大环境下,rpc服务作为最重要的互联网技术,蓬勃发展,诞生了许多知名基于rpc协议的框架,其中就有本文的主角gRPC技术。 一款高性能、开源的通用rpc框架 作者作为一名在JD实习的Cpper,经过一段时间的学…...
Node.js是什么?
概念:Node.js1运行在服务器端的js,用来编写服务器 特点:单线程、异步、非阻塞、统一API 是一个构建在V8引擎之上的js运行环境,它使得js可以运行在浏览器以外的地方,相对于大部分的服务器端语言来说,Node.J…...
java SSM厂房管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
一、源码特点 java SSM厂房管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S…...
uniapp实现---类似购物车全选
目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 四、小结 注意事项 一、实现思路 点击商家复选框,可选中当前商家下的所有商品。点击全选,选中全部商家的商品 添加单个多选框,在将多选…...
Java:List列表去重有序和无序
目录 待去重列表HashSet去重(不保证顺序)TreeSet去重(不保证顺序)LinkedHashSet去重(保证顺序)遍历List去重(保证顺序)Java8中Stream流处理(保证顺序)参考文章 待去重列表 // 列表 …...
Python绘图-12地理数据可视化
Matplotlib 自 带 4 类别 地理投影: Aitoff, Hammer, Mollweide 及 Lambert 投影,可以 结 合以下四 张 不同 的 图 了解四 种 不同投影 区别 。 12.1Aitoff投影 12.1.1图像呈现 12.1.2绘图代码 import numpy as np # 导入numpy库,用于…...
NineData与OceanBase完成产品兼容认证,共筑企业级数据库新生态
近日,云原生智能数据管理平台 NineData 和北京奥星贝斯科技有限公司的 OceanBase 数据库完成产品兼容互认证。经过严格的联合测试,双方软件完全相互兼容、功能完善、整体运行稳定且性能表现优异。 此次 NineData 与 OceanBase 完成产品兼容认证…...
旅游专业VR虚拟仿真情景教学实训
一、生动的情景模拟 VR技术能够创建出高度逼真的虚拟环境,使学生能够身临其境地体验旅游场景。无论是古色古香的古代建筑,还是充满异国情调的热带雨林,亦或是繁华的都市风光,VR都能一一呈现。这种沉浸式的体验,使得学…...
解决方案TypeError: string indices must be integers
文章目录 一、现象:二、解决方案 一、现象: PyTorch深度学习框架,运行bert-mini,本地环境是torch1.4-gpu,发现报错显示:TypeError: string indices must be integers 后面报字符问题,百度过找…...
【论文阅读】Segment Anything论文梳理
Abstract 我们介绍了Segment Anything(SA)项目:新的图像分割任务、模型和数据集。高效的数据循环采集,使我们建立了迄今为止最大的分割数据集,在1100万张图像中,共超过10亿个掩码。 该模型被设计和训练为可…...
接口自动化测试框架搭建:基于python+requests+pytest+allure实现
众所周知,目前市面上大部分的企业实施接口自动化最常用的有两种方式: 1、基于代码类的接口自动化,如: PythonRequestsPytestAllure报告定制 2、基于工具类的接口自动化,如: PostmanNewmanJenkinsGit/svnJme…...
蓝桥杯(3.9)
1210. 连号区间数 蓝桥杯暴力过80% import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int[] res new int[n];int[] copy new int[n];for(int i0;i&…...
万物皆可Find My,伦茨科技ST17H6x芯片赋能产品苹果Find My功能
苹果的Find My功能使得用户可以轻松查找iPhone、Mac、AirPods以及Apple Watch等设备。如今Find My还进入了耳机、充电宝、箱包、电动车、保温杯等多个行业。苹果发布AirTag发布以来,大家都更加注重物品的防丢,苹果的 Find My 就可以查找 iPhone、Mac、Ai…...
UHF无线麦克风方案的特点
U段无线麦克风方案是一种基于UHF频段的无线音频传输技术。相比于传统的VHF频段和2.4GHZ频段,U段频谱资源更为宽阔,信号传输更加稳定可靠。 1.广阔的频谱资源:U段频段通常指450MHZ至900MH之间的频谱范围,相比于VHF频段的100MH至30…...
04.1.CUDA安装避坑指南:从版本选择到C盘空间保卫战
1. 为什么你的C盘总是被CUDA悄悄占满? 每次装完CUDA发现C盘莫名其妙少了几个G,这大概是深度学习开发者最头疼的问题之一。我刚开始玩AI那会儿,装完CUDA 11.7后C盘直接飙红,系统弹窗疯狂报警,最后不得不重装系统。后来…...
终极指南:如何使用Greys Anatomy时间隧道(tt)功能轻松记录和回放Java方法执行
终极指南:如何使用Greys Anatomy时间隧道(tt)功能轻松记录和回放Java方法执行 【免费下载链接】greys-anatomy Java诊断工具 项目地址: https://gitcode.com/gh_mirrors/gr/greys-anatomy Greys Anatomy是一款强大的Java诊断工具,其时间隧道&…...
华为面试挂了!48 核 CPU 瞬间飙到 100%,排查不出死锁,面试官:你确定你是 Java 专家?
写在开头前两天有个兄弟说去面了华为的高级架构岗,本来前面聊得顺风顺水,结果终面被一个排查题直接干碎了。面试官原话是:“生产环境有一台 48 核的机器,本来跑得好好的,突然 CPU 瞬间全飙到 100%。但是看日志…...
为什么大家都说嘎嘎降AI好用?深度解读降AI率工具好坏的本质
为什么大家都说嘎嘎降AI好用?深度解读降AI率工具好坏的本质 一、一个口碑现象:嘎嘎降AI是怎么火起来的? 2026年毕业季,有个明显的趋势:在知乎、小红书、B站等平台上,嘎嘎降AI被提到的频率越来越高。不是自吹自擂的广告帖,而是真实用户在分享"终于过了"…...
ConvNeXt 系列改进:位置信息补全:ConvNeXt 结合 CoordAtt(坐标注意力),提升密集预测任务表现
一、写在前面:ConvNeXt 的“阿喀琉斯之踵” 2022年,Meta AI(FAIR)团队推出ConvNeXt,以纯卷积架构在ImageNet-1K上拿下87.8%的top-1准确率,在COCO目标检测和ADE20K语义分割任务上全面超越Swin Transformer,让整个社区重新认识到卷积网络的潜力。2023年,ConvNeXt V2更进…...
开发者的新武器:利用Claude Skill实现自动化代码审查与单元测试生成
你可能已经听说过Claude Skill——Anthropic在2025年10月推出的这个功能,一时间成了开发者圈子的热门话题。但说实话,刚开始我也觉得这不过是又一个“AI新特性”,听听就好,不用当真。直到有一天,我对着一个2000多行的R…...
从.map文件看透你的STM32程序:一份给嵌入式工程师的‘程序体检报告’解读指南
STM32程序体检报告:用.map文件透视嵌入式系统的健康密码 当你完成一个STM32项目的编译,除了熟悉的.hex或.bin文件,编译器还会生成一份名为.map的"体检报告"。这份看似晦涩的文本文件,实际上是了解程序在芯片内部真实运行…...
告别内存踩踏!用STM32的MPU给你的RTOS任务加把‘安全锁’(FreeRTOS实战)
告别内存踩踏!用STM32的MPU给你的RTOS任务加把‘安全锁’(FreeRTOS实战) 在嵌入式系统开发中,多任务环境下的内存管理一直是开发者面临的棘手问题。想象一下,当你的关键控制任务正在稳定运行,突然因为某个通…...
避坑指南:TUM RGB-D数据集预处理中的5个常见错误(及如何修复)
TUM RGB-D数据集实战避坑手册:从数据解析到3D重建的深度优化 在计算机视觉领域,TUM RGB-D数据集堪称SLAM和三维重建研究的"黄金标准"。但当我第一次将下载的压缩包解压后,面对那些看似规整的PNG文件和文本轨迹,却遭遇了…...
FreeRTOS临界区实战:从taskENTER_CRITICAL()到中断安全的数据保护
FreeRTOS临界区实战:从taskENTER_CRITICAL()到中断安全的数据保护 在嵌入式实时系统中,多任务与中断的并发操作就像一场精心编排的交响乐——每个乐器(任务或中断)都需要在正确的时间发声,但某些关键段落必须由单一乐器…...
