欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue中axios处理http发送请求的示例(Post和get)

程序员文章站 2022-06-17 16:58:01
本文介绍了vue中axios处理http发送请求的示例(post和get),分享给大家,具体如下:    axios文档 在处理http请求方面...

本文介绍了vue中axios处理http发送请求的示例(post和get),分享给大家,具体如下:

   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);
 });

具体使用参考文档:

注意: 对于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 ,从这方面来讲会更加方便一些。

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

vue中axios处理http发送请求的示例(Post和get)

不难看到: 使用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的必要了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。