Vue

Axios基本用法

2020-02-18  本文已影响0人  learninginto

Axios基本用法

基于promise的HTTP库,前后端交互的插件。参考官网文档

一、Axios特点

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

二、基本使用

cnpm install axios -S
axios.get('/user?ID=12345')
    .then(function (response) {
    console.log(response);
})
    .catch(function (error) {
    console.log(error);
});
axios.get('/user', {
    params: {
        ID: 12345
    }
})
    .then(function (response) {
    console.log(response);
})
    .catch(function (error) {
    console.log(error);
});
axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
})
    .then(function (response) {
    console.log(response);
})
    .catch(function (error) {
    console.log(error);
});

的好处:防止回调地狱,同步执行的异步代码,处理并发请求。

function getUserAccount() {
    return axios.get('/user/12345');
}

function getUserPermissions() {
    return axios.get('/user/12345/permissions');
}

axios.all([getUserAccount(), getUserPermissions()])
    .then(axios.spread(function (acct, perms) {
    // 两个请求现在都执行完成
}));
axios({
    mehtods:"get/post"
    url:""
    data:"post请求传递的数据"    
    params:"get请求传递的数据"
})

三、封装Axios请求

export default (options) => {
    return new Promise((resolve, reject) => {
        $.ajax({
            type: options.method || "GET",
            url: options.url,
            data: options.data,
            headers: options.headers || {},
            success: function (data) {
                resolve(data);
            },
            error: function (err) {
                reject(err)
            }
        })
    })
}

四、常用的配置项

它可以通过设置一个 baseURL 便于为 axios 实例的方法传递相对 URL

baseURL: process.env.NODE_ENV == 'development'?'http://:"http://:"

headers: {'X-Requested-With': 'XMLHttpRequest'}

如果请求话费了超过 timeout 的时间,请求将被中断

timeout:5000

设置允许cookie : withCredentials:true;

data

params

headers

axios.defaults.baseUrl = “”;

数据在发送到服务端之前以及数据响应到客户端之前的一个拦截。

请求拦截:loading,处理token

响应拦截:数据处理 axios默认会返回一堆数据,筛选之后会返回需要的data数据。

五、Axios的二次封装

cnpm install qs -S
import axios from "axios";

const server = axios.create({
    timeout:5000,
    //baseUrl:"",
    withCredentials:true
})

//请求的拦截
server.interceptors.request.use((config)=>{
    if(config.method == "get"){
        config.params = {...config.data};
    }

    return config;
    //config.headers["content-type"] = "application/json"

},(err)=>{
    return Promise.reject(err)
})


//响应的拦截
server.interceptors.response.use((res)=>{
    if(res.status == 200){
        return res.data;
    }
},(err)=>{
    return Promise.reject(err)
})


export default server;
上一篇 下一篇

猜你喜欢

热点阅读