axios 介绍与使用

171 阅读2分钟

axios 介绍与使用

1.定义

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

2.特点

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

3.使用

  • 引入axios
  • 创建axios实例
  • 设置请求拦截器
  • 设置响应拦截器
import axios from 'axios'
// 创建 axios 实例
const request = axios.create({
    baseURL: 'https://some-domain.com/api/',
    timeout: 1000,
    headers: {'X-Custom-Header': 'foobar'}
  }
})
/**
 * 添加请求拦截器
 */
axios.interceptors.request.use((config) => {
    // 在发送请求之前做些什么
    ```
  const token = store.getters.userToken
  if (token) {
    config.headers['Authorization'] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
  }
    return config; // 放行请求
}, (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
});
/**
 * 添加响应拦截器
 */
axios.interceptors.response.use(function (response) {
    return response;
}, function (error) {
    // 对响应错误进行设置
    return Promise.reject(error);
});
/**
 * 使用
 */
这里request 为 axios 实例, axios.create({})获得
//get 请求(params,url中的参数)
requset({
    method: 'get',
    url: '/node/getList',
    params: {
        a: 'a'
     }
})

//post请求(请求体中参数)
requset({
    method: 'get',
    url: '/node/getList',
    data: {
        a: 'a'
     }
})

上述为axios第一种用法

二、常用的get和post别名方法

**get用法:
axios.get('url').then((res) => { }).catch((err) => { })

**get:传参**
get请求传参有两种方式,其一直接在url上拼接参数,其二使用config配置中的params属性传参。
(1)  axios.get('url?name=jpf').then((res) => { }).catch((err) => { })

(2)
axios.get('url', {
    params: {
        name: 'jpf'
    }
}).then((res) => { }).catch((err) => { })
**post用法:
axios.post('url').then((res) => { }).catch((err) => { })

**post:传参**
post传参有三种方式,
(1)post别名方法的第二个参数传递对象,

    axios.post('url', {
        name: 'jpf',
        age: 18
    }).then((res) => { }).catch((err) => { })

(2)使用config配置中的data属性传参,

    axios.post('url', null, {
        data: {
            name: 'jpf',
            age: 18
        }
    }).then((res) => { }).catch((err) => { })

(3)其三post别名方法的第二个参数传递字符串。


axios.post('url', "name=jpf&age=18").then((res) => { });

// 可以直接接收, 后台不需要有json转换对象的操作

//其中第一二个方法本质上一样,都是给后台传递application/json格式。