JavaScript网络请求工具库axios使用实例探索

 更新时间:2024年01月21日 10:07:28   作者:JerryWang_汪子熙  
这篇文章主要为大家介绍了JavaScript网络请求工具库axios使用实例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

axios 库

笔者的日常工作,使用 Angular 开发 Web 应用。在 Angular 应用里如果需要发起 HTTP 请求,使用的是 Angular 自带的 HTTPClient 库。

如果要让我推荐一款不依赖于任何前端框架的网络请求工具库,我会推荐我使用过的另一款工具库 axios.

axios 是一个基于 Promise 的 HTTP 客户端,专门用于浏览器和 Node.js 环境。它的设计简洁而强大,提供了丰富的功能,包括拦截请求和响应、转换请求和响应数据等。在Node.js开发中,axios是处理HTTP请求的一种流行选择,因为它提供了一种简便的方式来处理异步操作。

安装

只需执行以下命令,即可使用 npm 进行安装:

`npm install axios`

安装之后,出现在本地项目的 node_modules 文件夹内:

基本用法

发送 GET 请求

使用 axios 发送 GET 请求非常简单。下面的例子,展示了如何获取百度首页的 HTML 内容:

const axios = require('axios');

axios.get('https://www.baidu.com')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

将上面的代码另存为一个 .js 文件,然后用 node 命令执行,即可看到从网络上取回来的百度首页的 HTML 源代码:

发送 POST 请求

发送 POST 请求同样直观。下面是向某服务器通过 HTTP POST 提交 JSON 数据的完整源代码:

const axios = require('axios');

const postData = {
  title: 'foo',
  body: 'bar',
  userId: 1
};

axios.post('https://jsonplaceholder.typicode.com/posts', postData)
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

高级功能

拦截器

同 Angular 里的 HTTPInterceptor 一样,axios 允许开发人员在请求或响应被 then 或 catch 处理之前就拦截这些 HTTP 请求。这是一个非常强大的功能,可以用于修改请求或响应、添加通用配置等。

下面这段代码,展示了如何在 axios 里使用 HTTP 请求的拦截器,打印出 HTTP 请求百度首页的 HTTP 请求配置信息和 headers 字段:

const axios = require('axios');

// 请求拦截器
axios.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  console.log('请求拦截器:', config);
  return config;
}, error => {
  // 对请求错误做些什么
  return Promise.reject(error);
});

axios.get('https://www.baidu.com')
  .then(response => {
    console.log('response from baidu:', response.data);
  })
  .catch(error => {
    console.error(error);
  });

node 执行上述代码后,得到下列输出:

同理,响应拦截器的用法:

const axios = require('axios');

axios.interceptors.response.use(response => {
    // 对响应数据做些什么
    console.log('响应拦截器:', response);
    return response;
  }, error => {
    // 对响应错误做些什么
    return Promise.reject(error);
  });

axios.get('https://www.baidu.com')
  .then(response => {
    console.log('response from baidu:', response.data);
  })
  .catch(error => {
    console.error(error);
  });

执行上面的代码,我们打印出了 HTTP 请求的响应对象(Response Object)的配置信息和头部字段等信息,如下图所示:

自定义实例

我们还可以创建一个自定义实例,以便在同一应用程序中使用不同的配置。这对于使用不同的 API 地址或设置不同的请求头非常有用。

const axios = require('axios');

// 创建实例
const instance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

// 使用自定义实例发起请求
instance.get('/endpoint')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

示例应用场景

1. 服务器端与第三方 API 交互

在服务器端使用 axios 与第三方 API 交互是一种常见的应用场景。例如,下面的代码是通过 axios 调用 GitHub API 获取笔者的用户信息:

const axios = require('axios');

axios.get('https://api.github.com/users/wangzixi-diablo')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

执行后,打印出我的用户信息:

2. 数据的定时同步

使用 Node.js 的定时任务,结合 axios 可以实现定时从其他服务器同步数据到本地数据库。

const axios = require('axios');
const schedule = require('node-schedule');

// 每天凌晨3点同步数据
const job = schedule.scheduleJob('0 3 * * *', function() {
  axios.get('https://api.example.com/data')
    .then(response => {
      // 处理同步的数据
      console.log('数据同步成功:', response.data);
    })
    .catch(error => {
      console.error('数据同步失败:', error);

    });
});

3. 文件上传

axios 可以用于文件上传,例如将用户上传的文件发送到服务器:

const axios = require('axios');
const fs = require('fs');
const fileStream = fs.createReadStream('path/to/file');
axios.post('https://api.example.com/upload', fileStream)
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

总结

axios 是一个功能强大且易于使用的 HTTP 客户端工具,适用于浏览器和 Node.js 环境。它提供了简洁的 API 和丰富的功能,如拦截器、自定义实例等,使得处理 HTTP 请求变得更加灵活和高效。在 Node.js 开发中,axios 是处理异步请求的理想选择,能够满足各种复杂的应用场景。

以上就是JavaScript网络请求工具库axios使用实例探索的详细内容,更多关于JavaScript axios网络请求的资料请关注脚本之家其它相关文章!

相关文章

  • JS实现随机生成字符串(可指定长度)的示例代码

    JS实现随机生成字符串(可指定长度)的示例代码

    本文主要介绍了JS实现随机生成字符串(可指定长度)的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码

    JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码

    这篇文章主要给大家介绍了关于利用Javascript如何禁止浏览器右键查看元素,或者通过按F12审查元素,触犯这两个条件会自动并关闭页面的相关资料,通过设置这个可以防止别人扒下自己的网页,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 创建表格,并添加事件

    创建表格,并添加事件

    创建表格,并添加事件...
    2006-08-08
  • jquery中validate与form插件提交的方式小结

    jquery中validate与form插件提交的方式小结

    这篇文章主要介绍了jquery中validate与form插件提交的方式小结,需要的朋友可以参考下
    2016-03-03
  • JS实战例子之实现自动打字机动效

    JS实战例子之实现自动打字机动效

    什么是打字机效果呢?打字机效果即为文字逐个输出,实际上就是一种Web动画,下面这篇文章主要给大家介绍了关于JS实战例子之实现自动打字机动效的相关资料,需要的朋友可以参考下
    2023-01-01
  • 微信小程序实现页面浮动导航

    微信小程序实现页面浮动导航

    这篇文章主要为大家详细介绍了微信小程序实现页面浮动导航,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • layui使用templet格式化表格数据的方法

    layui使用templet格式化表格数据的方法

    今天小编就为大家分享一篇layui使用templet格式化表格数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • async/await让异步操作同步执行的方法详解

    async/await让异步操作同步执行的方法详解

    这篇文章主要给大家介绍了关于async/await让异步操作同步执行的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用async/await具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • 微信小程序实现登录界面示例

    微信小程序实现登录界面示例

    这篇文章主要为大家详细介绍了微信小程序实现登录界面示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 微信小程序位置授权处理方法

    微信小程序位置授权处理方法

    这篇文章主要给大家介绍了关于微信小程序位置授权处理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用小程序具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06

最新评论