axios使用笔记

Axios 是一个基于 promise 的 HTTP 库,能够用在浏览器和 node.js 中。前端

特色:

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

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

使用文档连接ios

安装有三种途径:npm

  • 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提供了全部它所支持的请求方法的别名,能够直接用,诸如:
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'
    }
  });
}
复制代码

=> 是 箭头函数,不了解的能够点击连接数组

我本身的请求到此就配置好了一个,以后能够配置多个方法进行调用。不过请求的配置还有许多属性,有需求的能够本身去看看promise

response

前端接收后端响应的请求浏览器

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

{
  // `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);
  });
复制代码
相关文章
相关标签/搜索