zoukankan      html  css  js  c++  java
  • axios框架的使用(网络请求相关)

    特点

    • 支持浏览器和node.js
    • 支持promise
    • 能拦截请求和响应
    • 能转换请求和响应数据
    • 能取消请求
    • 自动转换JSON数据
    • 浏览器端支持防止CSRF(跨站请求伪造)

    安装

    用 npm:

     npm install axios 

    用 bower:

     bower install axios 

    用 cdn:

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

    使用

    // 1、axios的基本使用(默认请求是get)
    axios({
      url:'http://123.207.32.32:8000/home/multidata'
     // method:'get',
    }).then(res => {
      console.log(res)
    })
    
    //请求的参数拼接
    axios({
      url:'http://123.207.32.32:8000/home/data?type=pop&page=1',
    }).then(res => {
      console.log(res)
    })
    //写法一
    axios({
      url:'http://123.207.32.32:8000/home/data',
      // 专门针对get请求的参数拼接
      params:{
        type:'pop',
        page:1
      }
    }).then(res => {
      console.log(res)
    })
    
    //写法二
    axios.get("http://123.207.32.32:8000/home/multidata",{
      params:{
        type:'pop',
        page:1
      }
    }).then(res => {
      console.log(res)
    }).catch(err => {
      console.log(err)
    })
    
    //2、post请求
    axios.post("http://123.207.32.32:8000/home/multidata", {
      firstName: "Fred",
      lastName: "Flintstone"
    }).then(res => {
      console.log(res)
    })
    
    axios({
      method: "post",  //需要指定请求方式
      url: "/abc/login",
      data: {    //注意get请求是params
        userName: "Lan",
        password: "123"
      }
    })
      .then(res => {
        console.log(res);
      })
      .catch(err => {
        console.log(err);
      });
      
    // 3、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:5
      }
    })]).then(results => {
      console.log(results)
    })
    
    // 展开结果 axios.spread()
    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:5
      }
    })]).then(axios.spread((res1,res2) => {
      console.log(res1);
      console.log(res2);
    }))

    配置信息相关

    // axios.all([axios({
    //   baseURL:'http://123.207.32.32:8000/',
    //   timeout:5000,
    //   url:'home/multidata'
    // }),axios({
    //   baseURL:'http://123.207.32.32:8000/',
    //   url:'home/data',
    //   params:{
    //     type:'sell',
    //     page:5
    //   }
    // })]).then(axios.spread((res1,res2) => {
    //   console.log(res1);
    //   console.log(res2);
    // }))
    
    // 使用全局的axios和对应的配置进行网络请求
    axios.defaults.baseURL = 'http://123.207.32.32:8000/'
    axios.defaults.timeout = 5000
    
    axios.all([axios({
      url:'home/multidata'
    }),axios({
      url:'home/data',
      params:{
        type:'sell',
        page:5
      }
    })]).then(axios.spread((res1,res2) => {
      console.log(res1);
      console.log(res2);
    }))

    常见的配置选项

    axios实例和模块封装

    const instance1 = axios.create({
      baseURL:'http://123.207.32.32:8000/',
      timeout:5000
    })
    
    instance1({
      url:'home/multidata'
    }).then(res => {
      console.log(res)
    })
    
    instance1({
      baseURL:'/home/data',
      params:{
        type:'pop',
        page:1
      }
    }).then(res => {
      console.log(res)
    })
    
    const instance2 = axios.create({
      baseURL:'http://222.111.32.32:8000/',
      timeout:5000
    })
    
    instance2({
      baseURL:'/home/data2',
      params:{
        type:'pop',
        page:1
      }
    }).then(res => {
      console.log(res)
    })

    项目前景(模块化封装):在项目开发中,当我们在不同的页面中需要请求数据时可能会这样做,但是这样的话,每个请求的页面都需要引入axios框架,当axios框架不在维护或者有重大bug时,需要修改替换成例外的框架。这时会发现需要在每个页面都修改,这样太费尽了。

    封装request模块

    在src目录下新建network文件夹,然后在该文件夹里新建一个文件request.js

     (注:页面中不需要在引入axios框架啦!)

     

     

    axios的拦截器的使用

     参考:https://www.jianshu.com/p/d771bbc61dab
    https://www.jianshu.com/p/7a9fbcbb1114

  • 相关阅读:
    创建类以及引用一个类
    修改hosts文件
    微信第三方登录接口开发
    Android定位
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 725. Split Linked List in Parts
    Leetcode 445. Add Two Numbers II
    Leetcode 328. Odd Even Linked List
    Leetcode 237. Delete Node in a Linked List
    Leetcode 234. Palindrome Linked List
  • 原文地址:https://www.cnblogs.com/hellocd/p/13583611.html
Copyright © 2011-2022 走看看