• axios处理http请求


    axios中文文档  

     https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format   axios文档

    在处理http请求方面,已经不推荐使用vue-resource了,而是使用最新的axios,下面做一个简单的介绍。

    安装

    使用node

    npm install axios 

    使用cdn

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

    基本使用方法

    get请求

    // Make a request for a user with a given ID
    axios.get('/user?ID=12345')
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });
    
    // Optionally the request above could also be done as
    axios.get('/user', {
        params: {
          ID: 12345
        }
      })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });

    Post请求

     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) {
        // Both requests are now complete
      }));

    这个的使用方法其实和原生的ajax是一样的,一看就懂。

    使用 application/x-www-urlencoded 形式的post请求:

    var qs = require('qs');
      axios.post('/bbg/goods/get_goods_list_wechat', qs.stringify({"data": JSON.stringify({
        "isSingle": 1,
        "sbid": 13729792,
        "catalog3": 45908012,
        "offset": 0,
        "pageSize": 25
      })}), {
        headers: {
          "BBG-Key": "ab9ef204-3253-49d4-b229-3cc2383480a6",
        }
      })
      .then(function (response) {
        // if (response.data.code == 626) {
          console.log(response);
        // }
      }).catch(function (error) {
        console.log(error);
      });

    具体使用参考文档: https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format

    注意: 对于post请求,一般情况下,第一个参数是url,第二个参数是要发送的请求体的数据,第三个参数是对请求的配置。

    另外:axios默认是application/json格式的,如果不适用 qs.stringify 这种形式, 即使添加了请求头 最后的content-type的形式还是 json 的。 

    对于post请求,我们也可以使用下面的jquery的ajax来实现:

      

            $.ajax({
              url:'api/bbg/goods/get_goods_list_wechat',
              data:{
                'data': JSON.stringify({
                           "isSingle": 1,
                           "sbid": 13729792,
                           "catalog3": 45908012,
                           "offset": 0,
                           "pageSize": 25
                        })        
              },   
              beforeSend: function(request) {
                request.setRequestHeader("BBG-Key", "ab9ef204-3253-49d4-b229-3cc2383480a6");
              }, 
              type:'post',  
              dataType:'json',  
              success:function(data){      
                console.log(data);
              },
              error: function (error) {
                console.log(err);
              },
              complete: function () {
    
              }
            });

    显然,通过比较,可以发现,jquery的请求形式更简单一些,且jqury默认的数据格式就是 application/x-www-urlencoded ,从这方面来讲会更加方便一些。

    另外,对于两个同样的请求,即使都请求成功了,但是两者请求得到的结果也是不一样的,如下:

    不难看到: 使用axios返回的结果会比jquery的ajax返回的结构(实际的结果)多包装了一层,包括相关的config、 headers、request等。

    对于get请求, 我个人还是推荐使用axios.get()的形式,如下所示:

      axios.get('/bbg/shop/get_classify', {
        params: {
          sid:  13729792
        },
        headers: {
          "BBG-Key": "ab9ef204-3253-49d4-b229-3cc2383480a6"
        }
      })
      .then(function (response) {
        if (response.data.code == 130) {
          items = response.data.data;
          store.commit('update', items);
          console.log(items);
        }
        console.log(response.data.code);
      }).catch(function (error) {
        console.log(error);
        console.log(this);
      });

    即第一个参数是:url, 第二个参数就是一个配置对象,我们可以在配置对象中设置 params 来传递参数。 

    个人理解为什么get没有第二个参数作为传递的查询字符串,而post有第二个参数作为post的数据。

      因为get可以没有查询字符串,也可以get请求,但是post必须要有post的数据,要不然就没有使用post的必要了。

     

    参考文章:https://juejin.im/entry/587599388d6d810058a7a41a

  • 相关阅读:
    k8s-HPA自动伸缩pod数量
    k8s-命令使用
    k8s-业务镜像版本升级及回滚
    k8s-yml文件详解
    k8s-部署dashboard
    k8s-kubeasz项目后期添加节点及k8s版本升级
    k8s-部署kube dns及coredns
    CDNbest-访问限制
    CDNbest-访问限制
    CDNbest-改变回源host
  • 原文地址:https://www.cnblogs.com/zhuzhenwei918/p/6869330.html
Copyright © 2020-2023  润新知