当前位置: 首页 > news >正文

axios使用

axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 node.js。它支持拦截请求和响应、转换请求和响应数据、取消请求等功能。以下是 axios 的基本使用方法:
1. 安装 Axios
在项目中使用 axios,首先需要安装它:
使用 npm 安装:
npm install axios

使用 CDN 引入:
如果你是在浏览器中使用,可以通过 CDN 引入:
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

2. 基本用法
发送 GET 请求
// 使用 axios.get 方法
axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data); // 打印响应数据
  })
  .catch(error => {
    console.error('Error:', error);
  });

// 或者使用 axios 直接发送请求
axios({
  method: 'get',
  url: 'https://api.example.com/data'
})
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

发送 POST 请求
axios.post('https://api.example.com/data', {
  name: 'John Doe',
  age: 30
})
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

3. 配置请求
axios 支持多种配置选项,例如设置请求头、超时时间等。
设置请求头
axios.get('https://api.example.com/data', {
  headers: {
    'Authorization': 'Bearer your_token_here',
    'Content-Type': 'application/json'
  }
})
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

设置超时时间
axios.get('https://api.example.com/data', {
  timeout: 5000 // 5秒超时
})
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

4. 使用 Axios 实例
你可以创建一个自定义的 axios 实例,以便在多个地方复用相同的配置。
const api = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 5000,
  headers: {
    'Authorization': 'Bearer your_token_here'
  }
});

// 使用自定义实例发送请求
api.get('/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

5. 拦截器
axios 提供了拦截器功能,可以在请求发送前或响应返回后进行处理。
添加请求拦截器
axios.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  console.log('Request sent:', config.url);
  return config;
}, error => {
  // 对请求错误做些什么
  return Promise.reject(error);
});

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

6. 错误处理
axios 的错误对象包含很多有用的信息,例如 error.message、error.response 等。
axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    if (error.response) {
      // 服务器响应了,但状态码不是 2xx
      console.error('Status:', error.response.status);
      console.error('Data:', error.response.data);
    } else if (error.request) {
      // 请求发送了,但没有收到响应
      console.error('No response received');
    } else {
      // 请求配置错误
      console.error('Error:', error.message);
    }
  });

7. 取消请求
你可以使用 CancelToken 或 AbortController 来取消请求。
使用 CancelToken
const source = axios.CancelToken.source();

axios.get('https://api.example.com/data', {
  cancelToken: source.token
})
  .catch(error => {
    if (axios.isCancel(error)) {
      console.log('Request canceled:', error.message);
    } else {
      console.error('Error:', error);
    }
  });

// 取消请求
source.cancel('Operation canceled by the user');

使用 AbortController (现代浏览器)
const controller = new AbortController();
const signal = controller.signal;

axios.get('https://api.example.com/data', {
  signal: signal
})
  .catch(error => {
    if (error.name === 'AbortError') {
      console.log('Request aborted');
    } else {
      console.error('Error:', error);
    }
  });

// 取消请求
controller.abort();

总结
axios 是一个功能强大的 HTTP 客户端,适合在现代 JavaScript 项目中使用。你可以根据需要配置请求、处理响应、添加拦截器、取消请求等。希望这些示例能帮助你快速上手!

http://www.dtcms.com/a/100034.html

相关文章:

  • 网络空间安全(44)Web实战篇
  • 硬件学习笔记--56 电击防护方式分类介绍
  • 目标检测中COCO评估指标中每个指标的具体含义说明:AP、AR
  • 基于YOLOv8的PCB缺陷检测--补充实验
  • [C++面试] 智能指针面试点(重点)续3
  • 【视觉提示学习】3.28阅读随想
  • 11. STL的使用
  • springBoot统一响应类型3.4版本
  • LlamaIndex实现(基于PDF|CSV文件)RAG检索增强生成:NaiveRAG
  • 量子计算:未来计算技术的革命性突破
  • 【奶茶经济学的符号暴力本质】
  • 【软件开发】可复用的数据库导入工具类
  • J2EE框架技术 第五章 Spring注入与作用域
  • 【C++】STL库_stack_queue 的模拟实现
  • 【leetcode】通过两种遍历方式构造二叉树
  • 前端页面缓存问题
  • opencv之指纹验证
  • spring-security原理与应用系列:securityFilterChainBuilders
  • 职测-言语理解与表达
  • SD-WAN组网方案
  • pycharm相对路径引用方法
  • C++ 多态:面向对象编程的核心概念(一)
  • Android Product Flavors 深度解析与最佳实践:构建多版本应用的全方位指南
  • Redis的补充和RESP
  • 【工具】BioPred一个用于精准医疗中生物标志物分析的 R 软件包
  • C# StreamReader/StreamWriter 使用详解
  • 什么是 RBAC 权限模型?
  • jmeter web压力测试 压测
  • Android学习总结之算法篇三(打家劫舍)
  • 蓝桥杯—最小公倍数