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

用于模拟浏览器环境的对象,包含XMLHttpRequestFormData等,除了FormData,其他对象都不建议使用。

axios.utils

包含一些操作 blob 对象方法

utils.saveBlobToFile(blob, path)

  • blob {Blob} 要保存的对象
  • path {String} 保存路径

保存 blob 对象到指定路径,返回一个Promise

utils.openFile(path)

  • path {String} 要打开的文件路径

打开一个文件,返回一个 blob 对象

utils.copyInputStream(inputstream, outputstream)

  • inputstreamjava 输入流
  • outputstream java 输出流

拷贝输入流到输出流,这个函数是阻塞的,且不会自动关闭流。

utils.ThreadPool

此对象用于将一个同步函数转成异步方法运行,返回一个Promise,例如

1let promise = ThreadPool.run(()>{
2  //同步代码,返回值就是Promise的返回值
3})