axios
v6.3.9 新增
注意: 这个模块是异步的,返回的全部都是Promise
,如果你的程序有大量阻塞函数,请谨慎使用
这个模块不会自动加载,如需使用,请用
1const axios = require("axios");
模块使用方法与 axios 完全一致,请参阅官方网站,以下只介绍一些在 autox 中特有的内容。
这个模块通过模拟浏览器关键对象XMLHttpRequest
得以运行,内部使用 okhttp 进行网络请求,行为与浏览器中有些许差异。
不支持的内容:
ArrayBuffer
不支持处理和解析
XMLHttpRequest.overrideMimeType()
XMLHttpRequest.timeout
暂不支持设置
- 上传和下载进度事件
支持的responseType
:
text
json
blob
inputstream
java 输入流
stream
Readable 可读流 *v6.4.0 新增
支持的请求体数据类型:
RequestBody
okhttp3.RequestBody 对象
FormData
Blob
InputStream
java 输入流
String
plain object
会解析成 json
一个简单的示例
1const axios = require("axios");
2const FormData = axios.browser.FormData;
3
4/*
5 下载文件
6*/
7axios("https://m.baidu.com", {
8 responseType: "blob",
9})
10 .then((res) => {
11 const blob = res.data;
12 log("blob:", blob);
13 //保存blob
14 //return axios.utils.saveBlobToFile(blob, savePath)
15 })
16 .then(() => {
17 log("下载成功");
18 })
19 .catch(console.error);
20
21/*
22 使用表单
23*/
24let form = new FormData();
25form.set("a", "b");
26form.append("b", "123");
27form.append("b", "测试");
28axios
29 .post("http://baidu.com", form)
30 .then(function (res) {
31 log("请求成功1");
32 })
33 .catch(console.error);
34
35/*
36 使用表单上传文件
37*/
38let blob = axios.utils.openFile("./使用axios.js");
39
40form.enctype = "multipart/form-data";
41form.set("file", blob);
42axios
43 .post("http://baidu.com", form)
44 .then(function (res) {
45 log("请求成功2");
46 })
47 .catch(console.error);
48
49/*
50 也可以使用直接传输
51*/
52axios
53 .post("http://baidu.com", blob)
54 .then(function (res) {
55 log("请求成功3");
56 })
57 .catch(console.error);
axios.browser
用于模拟浏览器环境的对象,包含XMLHttpRequest
、FormData
等,除了FormData
,其他对象都不建议使用。
axios.utils
包含一些操作 blob 对象方法
utils.saveBlobToFile(blob, path)
blob
{Blob} 要保存的对象
path
{String} 保存路径
保存 blob 对象到指定路径,返回一个Promise
。
utils.openFile(path)
打开一个文件,返回一个 blob 对象
utils.copyInputStream(inputstream, outputstream)
inputstream
java 输入流
outputstream
java 输出流
拷贝输入流到输出流,这个函数是阻塞的,且不会自动关闭流。
utils.ThreadPool
此对象用于将一个同步函数转成异步方法运行,返回一个Promise
,例如
1let promise = ThreadPool.run(()>{
2 //同步代码,返回值就是Promise的返回值
3})