网站首页 > 技术文章 正文
概念
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];
});
猜你喜欢
- 2024-10-17 简书看到的技术文档,非常详细解释了axios技术,值得收藏
- 2024-10-17 全面分析前端的网络请求方式 前端网络请求框架
- 2024-10-17 一步一步学测试平台开发-Vue restful请求
- 2024-10-17 前端面试29:什么是fetch?fetch与20年前的ajax有什么不同?
- 2024-10-17 手把手教你全面分析前端如何网络请求方式
- 2024-10-17 实战:整合VueJS、Axios和Jacksons实现JAVA EE 下的数据持久化
- 2024-10-17 前端基础面试:axios的特点和基本使用方法以及拦截器的使用方法
- 2024-10-17 在React项目中使用Axios react-intl
- 2024-10-17 前端金三银四面试必备八股文——JavaScript
- 2024-10-17 Axios是什么?用在什么场景?如何使用?
你 发表评论:
欢迎- 11-19零基础学习!数据分析分类模型「支持向量机」
- 11-19机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现
- 11-19我以前一直没有真正理解支持向量机,直到我画了一张图
- 11-19研一小姑娘分享机器学习之SVM支持向量机
- 11-19[机器学习] sklearn支持向量机
- 11-19支持向量机
- 11-19初探支持向量机:用大白话解释、原理详解、Python实现
- 11-19支持向量机的核函数
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)