axios使用笔记

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

特点:
  • 从浏览器中创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 数据
  • 客户端支持防御 XSRF

我在做Spring Boot+Vue前后端分离项目的时候,是使用了这个库进行的前后端对接。
这个东西很简单,它的使用说明文档也很短小精悍,而我在这也不是想把它全部介绍一遍,只是记下我在项目中使用到的部分。

使用文档链接

安装有三种途径:

  • npm
$ npm install axios
复制代码
  • bower
$ bower install axios
复制代码
  • cdn
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
复制代码

request和response

request

前端向后端发送请求

axios提供了所有它所支持的请求方法的别名,可以直接用,诸如:
axios.get(url[, config])
axios.post(url[, data[, config]])
。。。。。。
参数可以不用指定,但我在这使用了axios提供的接口 axios(config),自己定义了配置

export const postKeyValueRequest = (url, params) => {
  return axios({

    // `method` 是创建请求时使用的方法
    method: 'post',

    // `url` 是用于请求的服务器 URL
    url: `${base}${url}`,

    // `data` 是作为请求主体被发送的数据
    data: params,

    // `transformRequest` 允许在向服务器发送前,修改请求数据,只能用在 'PUT', 'POST''PATCH' 这几个请求方法,后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
    transformRequest: [function (data) {
      let ret = ''
      for (let it in data) {
        ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
      }
      return ret
    }],

    // `headers` 是即将被发送的自定义请求头
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  });
}
复制代码

=> 是 箭头函数,不了解的可以点击链接

我自己的请求到此就配置好了一个,之后可以配置多个方法进行调用。不过请求的配置还有许多属性,有需求的可以自己去看看

response

前端接收后端响应的请求

一个response的相应数据结构如下:

{
  // `data` 由服务器提供的响应
  data: {},

  // `status` 来自服务器响应的 HTTP 状态码
  status: 200,

  // `statusText` 来自服务器响应的 HTTP 状态信息
  statusText: 'OK',

  // `headers` 服务器响应的头
  headers: {},

  // `config` 是为请求提供的配置信息
  config: {}
}
复制代码

可以通过then或catch接收,写法如下:

axios.get('/user/12345')
  .then(function(response) {
    console.log(response.data);
  });
复制代码

拦截器

拦截器在request发送前,还有response接受前拦截,语法如下:

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  });
复制代码

转载于:https://juejin.im/post/5cbb284c51882532525a1073

### Axios 基础用法教程 Axios 是一种基于 Promise 的 HTTP 庢客户端,支持浏览器和 Node.js 环境。它被广泛用于前端开发中的 AJAX 请求操作,并受到 React 和 Vue 官方推荐[^2]。 #### 1. 安装 Axios 可以通过多种方式安装 Axios: - 使用 npm 进行安装: ```bash npm install axios ``` - 使用 bower 进行安装: ```bash bower install axios ``` - 如果不想通过包管理工具安装,也可以直接引入 CDN 脚本: ```html <script src="https://unpkg.com/axios/dist/axios.min.js"></script> ``` 以上三种方式均可完成 Axios 的环境准备[^4]。 #### 2. 发送 GET 请求 GET 请求通常用来获取数据。以下是发送 GET 请求的一个简单例子: ```javascript // 发起一个简单的 GET 请求 axios.get('https://jsonplaceholder.typicode.com/posts') .then(response => { console.log(response.data); // 打印返回的数据部分 }) .catch(error => { console.error('Error:', error); }); ``` 上述代码会向指定 URL 发起请求并打印响应数据。 #### 3. 发送 POST 请求 POST 请求一般用于提交表单或者上传数据。下面是一个使用 POST 方法的例子: ```javascript // 发起一个带有参数的 POST 请求 axios.post('https://jsonplaceholder.typicode.com/posts', { title: 'foo', body: 'bar', userId: 1 }) .then(response => { console.log(response.data); // 输出新创建的对象 }) .catch(error => { console.error('Error:', error); }); ``` 此示例展示了如何传递 JSON 数据到服务器。 #### 4. 配置请求选项 可以为每次请求设置额外的配置项,比如超时时间、自定义头信息等: ```javascript axios({ method: 'get', url: 'https://jsonplaceholder.typicode.com/posts', timeout: 5000, // 设置超时时间为 5 秒钟 headers: { 'Authorization': 'Bearer YOUR_ACCESS_TOKEN' } }) .then(response => { console.log(response.data); }); ``` 这里设置了 `timeout` 参数以及添加了一个授权头部字段[^3]。 #### 5. 处理错误情况 当网络异常或其他问题发生时,应该妥善处理这些错误情形: ```javascript axios.get('/error-url') // 故意访问不存在的接口来触发错误 .then(function (response) { console.log(response); }) .catch(function (error) { if (error.response) { // The request was made and the server responded with a status code that falls out of the range of 2xx console.log(error.response.status); } else if (error.request) { // The request was made but no response was received console.log(error.request); } else { // Something happened in setting up the request that triggered an Error console.log('Error Message:', error.message); } }); ``` 这段代码演示了不同类型的错误捕获逻辑。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值