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

  • 相关阅读:
    remote: You are not allowed to push code to this project
    Ubuntu 查看本机的ip
    git跟踪远程分支,查看本地分支追踪和远程分支的关系
    edgedb 基本试用
    influxdb 全家桶运行
    Introducing Outflux: a smart way out of InfluxDB
    使用outflux 导入influxdb 的数据到timescaledb
    edgedb 强大的对象关系数据库
    Announcing the Operate Preview Release: Monitoring and Managing Cross-Microservice Workflows
    goaccess iis w3c 自定义log 格式参考
  • 原文地址:https://www.cnblogs.com/hellocd/p/13583611.html
Copyright © 2011-2022 走看看