axios库

axios库

axios基础 :https://www.jianshu.com/p/df464b26ae58

是一个基于Promise封装的ajax库

在这里插入图片描述

服务端的内容 用的nodejs

const express = require('express');
const cors = require('cors');

const app = express();
app.use(cors());

app.get('/',(req,res) => {
    
    
    res.send('get');
});
app.get('/list',(req,res) => {
    
    
    res.send('get list');
});
app.post('/post',(req,res) => {
    
    
    res.send('post');
});
app.head('/head',(req,res) => {
    
    
    res.send('head');
});
app.options('/options',(req,res) => {
    
    
    res.send('options');
});

app.listen(8848,() => {
    
    
    console.log('success');
});

常规用法

这个axios库提供了对应的请求的请求方法

比如axios.get(),axios.post()… get/post/head/put/options…

axios.get([url],[options]);
//第一个参数就是发送请求的地址/接口(api)  
//第二参数是参数的配置项(就是需要传给服务器的信息 比如:ID什么的)
//get请求中,会把params中的减值对拼接成urlencode格式的字符串,然后以问号传递参数的方式传递给服务器  就是?key=value&key=value 格式
//当然不写配置文件 自己直接拼在api中也行
    axios.get('ttp://127.0.0.1:8848/',{
    
    
        params:{
    
    
            name:'aaa',
            age:9
        }
    });
//post 中 配置文件中传递的内容都相当于基于请求主体传递给服务器,但是传递给服务器的内容格式是RAM(JSON格式字符串),不是x-www-form-urlencoded
    axios.post('ttp://127.0.0.1:8848/post',{
    
    
        name:'aaa',
        age:9
    });


//基于get和post方法发送请求,返回的结果都是promise实例   
    let promise =  axios.get('ttp://127.0.0.1:8848/',{
    
    
        params:{
    
    
            lx:12,
        }
    });
    promise.then(res => {
    
    
        console.log(res);//结果是个对象
        //对象中有 
        //data(从服务器获得的响应主体内容)   headers(从服务器获得的响应头信息)  
        //request(创建的ajax实例)     status(状态码)  statusText(状态码的描述)
        //config(基于axios发送请求的时候做的配置项)
    }).catch(msg =>{
    
    //如果请求传递失败就走catch
        console.log(msg);//打印的是请求失败的原因
    })

一次并发多个请求

当需要在两个请求都完成的情况下才去执行某些代码

//1.
let resultA;
axios.get('A').the(resultA => {
    
    
    return axios.get('B');
}).then(resultB => {
    
    
    console.log(resultA,resultB)
    //在这里就是在AB两个请求都成功的时候才会执行
    //resultB是B成功的结果   
    //这种方法想要A请求的结果 只能将A的变量作为一个全局变量 不然访问不到
})

axios中提供了一种一次并发多个请求 all方法 这个方法就能实现在多个请求都完成时 做一些操作

let sendAry = [
    axios.get('http://127.0.0.1:8848/'),
    axios.get('http://127.0.0.1:8848/list'),
    axios.post('http://127.0.0.1:8848/post'),
]
axios.all(sendAry).then(result =>{
    
    
    console.log(result)//返回的是一个数组  每一个元素是一个请求结果
});

返回的结果

在这里插入图片描述

分别获得每个请求返回的内容
let sendAry = [
    axios.get('http://127.0.0.1:8848/'),
    axios.get('http://127.0.0.1:8848/list'),
    axios.post('http://127.0.0.1:8848/post'),
]

//提供axios中的spread方法可以分别获每个请求的结果
let anonymous = axios.spread((resA,resB,resC) => {
    
    
    console.log(resA,resB,resC);
});
axios.all(sendAry).then(anonymous);
//这里 先是all执行完 向then返回一个请求结果的数组  
//then执行anonymous函数  函数内是spread方法  
//spread会根据返回的请求结果的数组 分别将元素赋给他的第一个参数就是resA,resB,resC) => {})

返回的结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44492275/article/details/108928205
今日推荐