axios的運用

axios是vue官方引薦的http庫,概況見官方中文文檔

裝置:

npm install axios

裝置依靠:

npm install --save axios vue-axios

設置模板:

//main.js中
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
 
Vue.use(VueAxios, axios)
//然後你就能夠愉快地運用axios啦

假如不想如許裝置,也能夠疾速援用它:

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

怎樣運用:

有好幾種要領,get post delete put patch 什麼的,不過我一般就用get和post兩種,所以我就紀錄這類中的運用要領了。

let data = {   //要傳的參數
    'loginName':'123456',
    'passWord':'123456',
    'updateSign':'52af3ce8a82f62707789fe00899ed3f0',
    'isLogin':'1'
}


//post要求

this.axios.post('/api/user/sickUserLogin/3',data)
    .then((response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    });
 
    
//get要求

this.axios.get('/api/user/sickUserLogin/3',{params:data})
    .then((response) => {
        console.log(response.data);
        console.log(response);   
    })
    .catch(function (error) {
        console.log(error);
    });

這裏要注重一點的是:get和post要求的傳參體式格局是不一樣的,緣由能夠參考這裏

axios.get('url', {params: data});
axios.post('url', data);

//get要求的參數是拼接url字符串通報的;
//post要求的參數是經由過程data要求主體通報的;

參數花樣:

axios的默許參數花樣是json字符串,傳參體式格局就像上面誰人demo一樣即可。然則假如你想以key:value的體式格局傳參,則須要做一點轉變:參考這裏
注重:假如你的要求要領是post,又劃定了參數花樣是application/x-www-form-urlencoded,則必須要運用下面這些要領中的一種。(我在寫demo的時刻測試了一下,post要領下json傳參花樣是失利的,必須要改成鍵值對的花樣,不然會報錯)
重要引薦這類寫法:

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));

這個要領須要先裝置一下qs:

npm install qs

import qs from 'qs'

Vue.prototype.qs = qs;  //全局定義,運用的時刻用this.qs.stringify(data)即可

另有另一種寫法淺顯易懂:

var params = new URLSearchParams();    //這類寫法不須要引入qs
params.append('collectId',"16");       //你要傳給背景的參數值 key/value
params.append('collectTye',"2");
params.append('isCancel',"2",);


this.$axios({
    method: 'post',
    url:url,
    data: params 
}).then((res)=>{

})

設置axios的baseURL:

//在main.js中:
axios.defaults.baseURL = 'http://api.eeesys.com:18087/';
//這些詳細的寫法能夠多看幾遍文檔,就懂了,我也不是很懂
//依據我的考試,如許寫了以後,要求會疏忽掉proxyTable中的設置,直接要求這個地點,如許在臨盆環境下就能夠夠跨域了,不知道是否是如許的

從新定義一個axios實例:

const $axios = axios.create({
    baseURL: 'http://api.eeesys.com:18087/',
    timeout: 5000,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
});

// 初始化默許post header,這裏劃定了post要求的傳參花樣是application/x-www-form-urlencoded
//假如不如許寫,背景接收到的參數是null
$axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
Vue.prototype.$axios = $axios;

如許就能夠夠在代碼中運用本身定義的axios實例,沒有設置的屬性會繼續lib/defaults.js文件中的設置

    原文作者:蔣個笑話吧
    原文地址: https://segmentfault.com/a/1190000014413601
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞