HTTP客户端库Axios详细介绍及使用
xsobi 2025-01-02 20:02 1 浏览
概念
Axios是一个基于promise用于浏览器和node.js的简单HTTP客户端。Axios在一个具有可扩展接口的很小体积的JS包中提供了一个易于使用的库。
它是同构的(它可以用相同的代码库在浏览器和nodejs中运行)。在服务器端,它使用服务器端上的node.js http模块,而在客户端(浏览器)上,它使用XMLHttpRequests。
特点
- 从浏览器中创建XMLHttpRequests(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)
- 从node.js发出http请求(http://nodejs.org/api/http.html)
- 支持Promise API(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)
- 拦截请求和响应
- 转换请求和响应数据
- 取消请求
- 自动转换JSON数据
- 客户端支持对XSRF的保护(http://en.wikipedia.org/wiki/Cross-site_request_forgery)
浏览器支持
安装
使用npm:
npm install axios
使用bower:
bower install axios
使用yarn:
yarn add axios
使用jsDelivr CDN:
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
使用unpkg CDN:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
示例
示例采用CommonJS语法引入Axios,通过npm进行安装。
创建示例工程:axios-demo,工程采用webpack进行项目的构建打包及运行。
mkdir axios-demo
cd axios-demo
npm init -y
npm install webpack webpack-cli webpack-dev-server html-webpack-plugin --save-dev
工程目录结构:
其中package.json的文件内容如下:
{
"name": "axios-demo",
"version": "1.0.0",
"description": "",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack serve"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^5.3.1",
"webpack": "^5.28.0",
"webpack-cli": "^4.6.0"
}
}
webpack.config.js的文件内容如下:
const {resolve} = require("path")
const HtmlWebpackPlugin = require("html-webpack-plugin")
module.exports = {
entry: "./src/index.js",
output: {
filename: "[hash].bundle.js",
path: resolve(__dirname,'dist')
},
plugins: [
new HtmlWebpackPlugin({
title: "axios 示例"
})
]
}
- GET请求示例
下面编写一个执行GET请求的示例,其中后台数据采用Mock.js进行模拟。
本地安装axios和mock.js:
npm install mockjs axios
在src/index.js中引入mockjs,axios并编写对应实现代码。
const Mock = require("mockjs")
const axios = require("axios")
// Mock 数据模板
const templateData = {
"users|4-10":{
"username|5-9": "abcdefghjklqwertyui1234567890",
"password|8-20": "1234567890qwertyuiop;'[",
"age|1-10":12
}
}
// Mock请求地址
Mock.mock("/users.json?list=all",templateData)
// 发送请求获取用户列表
axios.get('/users.json?list=all')
.then(function (response) {
// handle success
console.log("axios1",JSON.stringify(response));
})
.catch(function (error) {
// handle error
console.log(error);
})
.then(function () {
// always executed
});
// 发送带参数请求的另一种方式
axios.get('/users.json', {
params: {
list: "all"
}
})
.then(function (response) {
console.log("axios2",JSON.stringify(response));
})
.catch(function (error) {
console.log(error);
})
.then(function () {
// always executed
});
// 使用 async/await 方式
async function getUser() {
try {
const response = await axios.get('/users.json?list=all');
console.log("axios3",JSON.stringify(response));
} catch (error) {
console.error(error);
}
}
getUser()
通过npm run build进行项目代码的构建,然后执行npm run start 启动项目,然后在浏览器中访问http://localhost:8080/。
上面示例中的async/await是ECMAScript 2017的一部分,不支持Internet Explorer和更老的浏览器,所以请谨慎使用。
- POST请求示例
axios.post('/users.json?list=all', {
username: 'demo',
password: 'password'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
执行多个并发请求
function getUserAccount() {
return axios.get('/user/12345');
}
function getUserPermissions() {
return axios.get('/user/12345/permissions');
}
Promise.all([getUserAccount(), getUserPermissions()])
.then(function (results) {
const acct = results[0];
const perm = results[1];
});
相关推荐
- MySQL 正则表达式最全介绍
-
MySQL支持使用正则表达式进行模式匹配和文本搜索。正则表达式提供了一种强大的工具,可以用来匹配和检索字符串中的复杂模式。MySQL中的正则表达式功能主要在REGEXP或RLIKE运算符中使用。1....
- 正则前面的 (?i) (?s) (?m) (?is) (?im) 是什么意思
-
Q:经常看见的正则前面的(?i)(?s)(?m)(?is)(?im)是什么意思?...
- SQL中的正则表达式
-
正则表达式通常用来匹配字符,比如在一段字符中截取我们想要的字符,又或者将不想要的字符串替换,或者统计某个或者某几个字符出现的次数,我们都可以使用Oracle提供的正则表达式语法来完成。1.比如,我们在...
- 学习VBA,报表做到飞 第四章 正则表达式 4.10 贪婪模式与懒惰模式
-
第四章正则表达式4.10贪婪模式与懒惰模式正则表达式匹配时默认为贪婪模式,也就是尽可能多的匹配。有时候我们需要对符合条件的内容分开匹配,就要用到懒惰模式。...
- Python re模块 正则表达式之compile函数
-
一、应用场景为了重复利用同一个正则对象,需要多次使用这个正则表达式的话,使用re.compile()保存这个正则对象以便复用,可以让程序更加高效。二、使用方法...
- 几条常用的JavaScript正则表达式
-
在做项目或者代码编写过程中,一般会遇到验证电话、邮箱等格式是否正确合法的问题。通常我们会使用正则表达式,自己写很麻烦,且正则表达式又不是那么容易记住。所以现在分享几条常用的正则表达式,需要的时候直接复...
- C语言中使用正则表达式
-
POSIX规定了正则表达式的C语言库函数,参见regex(3),我们已经学了很多C函数的用法读者应该具备自己看懂man手册的能力C语言中使用正则表达式一般分为三步:1.编译正则表达式regco...
- VBA与Excel入门系列-12-正则表达式(上篇)
-
系统环境:Windows10...
- 系列专栏(八):JS的第七种基本类型Symbols
-
ES6作为新一代JavaScript标准,已正式与广大前端开发者见面。为了让大家对ES6的诸多新特性有更深入的了解,MozillaWeb开发者博客推出了《ES6InDepth》系列文章。CSDN...
- EXCEL正则表达式的基础语法
-
正则表达式的基本概念及用途了解之后,我们就来学习下具体的语法,先以一个简单的例子来讲解。基础语法:比如,A1单元格中有一串字符:aabbccdd...
- 这几个冷门到你没听过的App,好用到为你打开新世界大门
-
一些好用的App总被埋没在数以百万计的应用商店中。今天为大家推荐几款Windows、Android、iOS、macOS平台里略显小众、但足够好用的遗珠App。万彩办公大师(Windows)转换Offi...
- C/C++知识分享:C语言正则表达式
-
C语言的正则表达式规则,特此跟大家分享。一、C语言如何使用正则表达式?C语言使用正则表达式的方法很简单,只需要包含正则表达式头文件即可:...
- Github工具库(二)
-
作者:Yunying...
- 在 JavaScript 中替换所有指定字符 3 种方法
-
在JS没有提供一种简便的方法来替换所有指定字符。在Java中有一个replaceAll(),replaceAll(Stringregex,Stringreplacement))方法...
- 正则表达式进阶
-
正则表达式,是每个程序员的必备的技能1.贪婪匹配和惰性匹配...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- firebug 使用 (31)
- characterencodingfilter (33)
- getmonth (34)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)
- android studio 3 0 (34)
- android应用开发 (31)
- html转js (35)
- 索引的作用 (33)
- css3 0 (31)
- checkedlistbox (34)
- localhost 8080 (32)
- 多态 (32)
- net开发 (31)