axios1

image.png

axios的基本使用

import Vue from 'vue'
import App from './App'
//使用之前要安装 npm install axios --save
import axios from "axios";
Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  render: h => h(App)
});
axios({
  //默认 get方式
  methods:"get",
  url:"http://123.207.32.32:8000/home/multidata"
}).then(res=>{
  console.log(res);
});

axios({
  url:"http://123.207.32.32:8000/home/data",
  params:{
    type:"pop",
    page:1
  }
}).then(res=>{
  console.log(res);
});

2.axios发送并发请求

axios.all([axios({
  url:"http://123.207.32.32:8000/home/multidata"
}),axios({
  url:"http://123.207.32.32:8000/home/data",
  params:{
    type:"sell",
    page:3
  }
  }
)]).then(
  res=>{
    console.log(res);
    console.log(res[0]);
    console.log(res[1]);
  }
);
//方式二 ——展开
axios.all([axios({
  url:"http://123.207.32.32:8000/home/multidata"
}),axios({
    url:"http://123.207.32.32:8000/home/data",
    params:{
      type:"sell",
      page:3
    }
  }
)]).then(axios.spread((result1,result2)=>{
  console.log(result1);
  console.log(result2);
}));

image.png

全局配置

axios.defaults.baseURL="http://123.207.32.32:8000";
//单位是毫秒
axios.defaults.timeout=5000;
axios.all([axios({
  url:"/home/multidata"
}),axios({
    url:"/home/data",
    //如果请求方式为post  用请求体 data代替params
    params:{
      type:"sell",
      page:3
    }
  }
)]).then(axios.spread((result1,result2)=>{
  console.log(result1);
  console.log(result2);
}));

创建axios对应的实例

const axiosInstance = axios.create({
  baseURL:"http://123.207.32.32:8000",
  timeout:5000
});
axiosInstance({
  url:"/home/multidata"
}).then(res=>{
  console.log(res);
})

axiosInstance({
  url:"/home/data",
  params:{
    type:"sell",
    page:3
  }
}).then(res=>{
  console.log(res);
})

axios的封装调用

network/request.js
import axios from "axios";

export function request(config) {
  //1.创建axios实例
  const instance = axios.create({
    baseURL:"http://123.207.32.32:8000",
    timeout:5000
  });
  //2.axios的拦截器
  //2.1 请求拦截器
  instance.interceptors.request.use(config=>{
  //  进行操作
    return config;
  },error => {
  //  进行操作
    return error;
  });
  //2.2响应拦截器
  instance.interceptors.response.use(res=>{
    //进行操作
    return res;
  },error => {
    //进行操作
    return error
  });
  //3.发送真正的网络请求
  return instance(config)
}

调用
import {request} from "./network/request";
request({
  url:"/home/multidata"
}).then(res=>{
  console.log("axios的封装调用"+JSON.stringify(res));
},err=>{
  console.log(err);
});

同事的封装

import axios from axios;
export const postData = (company) => {
  let headers = {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
  }
  return axios.request({
    url: 'cev/commonData/',
    method: 'post',
    data: company,
    headers: headers,
    transformRequest: [function (data) {
      let ret =''
      for (let it in data) {
        ret += encodeURIComponent(it) + "="+ encodeURIComponent(data[it]) + "&"
      }
      return ret
    }],
  })
};

调用

import {postData} from ...;
  postData(condition).then(res => {
                    //操作
                }).catch(function (err) {
                    //操作
                })
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容