<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        Vue2 配置 Axios api 接口調(diào)用文件的方法

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:25:35
        文檔

        Vue2 配置 Axios api 接口調(diào)用文件的方法

        Vue2 配置 Axios api 接口調(diào)用文件的方法:前情回顧 在上一篇中,我們通過配置基本的信息,已經(jīng)讓我們的項(xiàng)目能夠正常的跑起來了。但是,這里還沒有涉及到 AJAX 請(qǐng)求接口的內(nèi)容。 vue 本身是不支持 ajax 接口請(qǐng)求的,所以我們需要安裝一個(gè)接口請(qǐng)求的 npm 包,來使我們的項(xiàng)目擁有這個(gè)功能。 這其實(shí)是一
        推薦度:
        導(dǎo)讀Vue2 配置 Axios api 接口調(diào)用文件的方法:前情回顧 在上一篇中,我們通過配置基本的信息,已經(jīng)讓我們的項(xiàng)目能夠正常的跑起來了。但是,這里還沒有涉及到 AJAX 請(qǐng)求接口的內(nèi)容。 vue 本身是不支持 ajax 接口請(qǐng)求的,所以我們需要安裝一個(gè)接口請(qǐng)求的 npm 包,來使我們的項(xiàng)目擁有這個(gè)功能。 這其實(shí)是一

        前情回顧

        在上一篇中,我們通過配置基本的信息,已經(jīng)讓我們的項(xiàng)目能夠正常的跑起來了。但是,這里還沒有涉及到 AJAX 請(qǐng)求接口的內(nèi)容。

        vue 本身是不支持 ajax 接口請(qǐng)求的,所以我們需要安裝一個(gè)接口請(qǐng)求的 npm 包,來使我們的項(xiàng)目擁有這個(gè)功能。

        這其實(shí)是一個(gè)重要的 unix 思想,就是一個(gè)工具只做好一件事情,你需要額外的功能的時(shí)候,則需要安裝對(duì)應(yīng)的軟件來執(zhí)行。如果你以前是一個(gè) jquery 重度用戶,那么可能理解這個(gè)思想一定要深入的理解。

        支持 ajax 的工具有很多。一開始,我使用的是 superagent 這個(gè)工具。但是我發(fā)現(xiàn)近一年來,絕大多數(shù)的教程都是使用的 axios 這個(gè)接口請(qǐng)求工具。其實(shí),這本來是沒有什么差別的。但是為了防止你們在看了我的博文和其他的文章之后,產(chǎn)生理念上的沖突。因此,我也就改用 axios 這個(gè)工具了。

        本身, axios 這個(gè)工具已經(jīng)做了很好的優(yōu)化和封裝。但是,在使用的時(shí)候,還是略顯繁瑣,因此,我重新封裝了一下。當(dāng)然,更重要的是,封裝 axios 這個(gè)工具是為了和我以前寫的代碼的兼容。不過我封裝得很好,也推薦大家使用。

        封裝 axios 工具,編輯 src/api/index.js 文件

        首先,我們要使用 axios 工具,就必須先安裝 axios 工具。執(zhí)行下面的命令進(jìn)行安裝

        npm install axios -D

        npm install axios -D

        由于宿舍翻墻條件不好,這里使用 cnpm 替代

        這樣,我們就安裝好了 axios 工具了。

        還記得我們在第三篇博文中整理的系統(tǒng)結(jié)構(gòu)嗎?我們新建了一個(gè) src/api/index.js 這個(gè)空文本文件,就那么放在那里了。這里,我們給它填寫上內(nèi)容。

        // 配置API接口地址
        var root = 'https://cnodejs.org/api/v1'
        // 引用axios
        var axios = require('axios')
        // 自定義判斷元素類型JS
        function toType (obj) {
         return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
        }
        // 參數(shù)過濾函數(shù)
        function filterNull (o) {
         for (var key in o) {
         if (o[key] === null) {
         delete o[key]
         }
         if (toType(o[key]) === 'string') {
         o[key] = o[key].trim()
         } else if (toType(o[key]) === 'object') {
         o[key] = filterNull(o[key])
         } else if (toType(o[key]) === 'array') {
         o[key] = filterNull(o[key])
         }
         }
         return o
        }
        /*
         接口處理函數(shù)
         這個(gè)函數(shù)每個(gè)項(xiàng)目都是不一樣的,我現(xiàn)在調(diào)整的是適用于
         https://cnodejs.org/api/v1 的接口,如果是其他接口
         需要根據(jù)接口的參數(shù)進(jìn)行調(diào)整。參考說明文檔地址:
         https://cnodejs.org/topic/5378720ed6e2d16149fa16bd
         主要是,不同的接口的成功標(biāo)識(shí)和失敗提示是不一致的。
         另外,不同的項(xiàng)目的處理方法也是不一致的,這里出錯(cuò)就是簡單的alert
        */
        
        function apiAxios (method, url, params, success, failure) {
         if (params) {
         params = filterNull(params)
         }
         axios({
         method: method,
         url: url,
         data: method === 'POST' || method === 'PUT' ? params : null,
         params: method === 'GET' || method === 'DELETE' ? params : null,
         baseURL: root,
         withCredentials: false
         })
         .then(function (res) {
         if (res.data.success === true) {
         if (success) {
         success(res.data)
         }
         } else {
         if (failure) {
         failure(res.data)
         } else {
         window.alert('error: ' + JSON.stringify(res.data))
         }
         }
         })
         .catch(function (err) {
         let res = err.response
         if (err) {
         window.alert('api error, HTTP CODE: ' + res.status)
         }
         })
        }
        
        // 返回在vue模板中的調(diào)用接口
        export default {
         get: function (url, params, success, failure) {
         return apiAxios('GET', url, params, success, failure)
         },
         post: function (url, params, success, failure) {
         return apiAxios('POST', url, params, success, failure)
         },
         put: function (url, params, success, failure) {
         return apiAxios('PUT', url, params, success, failure)
         },
         delete: function (url, params, success, failure) {
         return apiAxios('DELETE', url, params, success, failure)
         }
        }
        
        

         好,我們寫好這個(gè)文件之后,保存。

        2017年10月20日補(bǔ)充,刪除了評(píng)論中有人反映會(huì)出錯(cuò)的 return ,確實(shí)這個(gè) return 是沒有什么作用的。不過我這邊確實(shí)沒出錯(cuò)。沒關(guān)系啦,本來就沒啥用,只是一個(gè)以前的不好的習(xí)慣代碼。

        有關(guān) axios 的更多內(nèi)容,請(qǐng)參考官方 github: https://github.com/mzabriskie/axios ,中文資料自行百度。

        但就是這樣,我們還不能再 vue 模板文件中使用這個(gè)工具,還需要調(diào)整一下 main.js 文件。

        調(diào)整 main.js 綁定 api/index.js 文件

        這次呢,我們沒有上來就調(diào)整 main.js 文件,因?yàn)樵嘉募团渲玫帽容^好,我就沒有刻意的想要調(diào)整它。

        原始文件如下:

        import Vue from 'vue'
        import App from './App'
        import router from './router'
        
        Vue.config.productionTip = false
        
        /* eslint-disable no-new */
        new Vue({
         el: '#app',
         router,
         template: '<App/>',
         components: { App }
        })
        
        

        我們插入以下代碼:

        // 引用API文件
        import api from './api/index.js'
        // 將API方法綁定到全局
        Vue.prototype.$api = api
         
        也就是講代碼調(diào)整為:
        
        import Vue from 'vue'
        import App from './App'
        import router from './router'
        
        // 引用API文件
        import api from './api/index.js'
        // 將API方法綁定到全局
        Vue.prototype.$api = api
        
        Vue.config.productionTip = false
        
        /* eslint-disable no-new */
        new Vue({
         el: '#app',
         router,
         template: '<App/>',
         components: { App }
        })
        
        

         好了,這樣,我們就可以在項(xiàng)目中使用我們封裝的 api 接口調(diào)用文件了。

        測試一下看看能不能調(diào)通

        我們來修改一下 src/page/index.vue 文件,將代碼調(diào)整為以下代碼:

        <template>
         <div>index page</div>
        </template>
        <script>
        export default {
         created () {
         this.$api.get('topics', null, r => {
         console.log(r)
         })
         }
        }
        </script>

        好,這里是調(diào)用 cnodejs.org 的 topics 列表接口,并且將結(jié)果打印出來。

        我們在瀏覽器中打開控制臺(tái),看看 console 下面有沒有輸出入下圖一樣的內(nèi)容。如果有的話,就說明我們的接口配置已經(jīng)成功了。

        cnodejs.org 接口數(shù)據(jù)演示

        cnodejs.org 接口數(shù)據(jù)演示

        好,如果你操作正確,代碼沒有格式錯(cuò)誤的話,那么現(xiàn)在應(yīng)該得到的結(jié)果是和我一樣的。如果出錯(cuò)或者怎么樣,請(qǐng)仔細(xì)的檢查代碼,看看有沒有什么問題。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Vue2 配置 Axios api 接口調(diào)用文件的方法

        Vue2 配置 Axios api 接口調(diào)用文件的方法:前情回顧 在上一篇中,我們通過配置基本的信息,已經(jīng)讓我們的項(xiàng)目能夠正常的跑起來了。但是,這里還沒有涉及到 AJAX 請(qǐng)求接口的內(nèi)容。 vue 本身是不支持 ajax 接口請(qǐng)求的,所以我們需要安裝一個(gè)接口請(qǐng)求的 npm 包,來使我們的項(xiàng)目擁有這個(gè)功能。 這其實(shí)是一
        推薦度:
        標(biāo)簽: 文件 VUE API
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产V高清在线观看| 久久精品免费一区二区喷潮 | 无码永久免费AV网站| 亚洲AV中文无码字幕色三| 国产免费高清69式视频在线观看| 国产a不卡片精品免费观看| 美国毛片亚洲社区在线观看 | 国产成人免费手机在线观看视频 | 亚洲精品人成网线在线播放va| 青草草色A免费观看在线| 国产成人精品日本亚洲专一区| 成人无码区免费视频观看 | 国产aa免费视频| 黄色a三级三级三级免费看| 亚洲国产成人久久综合区| 一级看片免费视频囗交| 久久精品国产亚洲综合色| 三年片在线观看免费观看大全动漫 | 国产又大又粗又硬又长免费 | 久久免费高清视频| 91亚洲国产在人线播放午夜 | 亚洲国产精品日韩av不卡在线| 国产老女人精品免费视频| 国产伦精品一区二区免费| 久久精品亚洲日本佐佐木明希| 69视频在线观看免费| 中文字幕无码亚洲欧洲日韩| 免费看小12萝裸体视频国产| 国产无遮挡又黄又爽免费网站| 亚洲视频在线免费观看| 夭天干天天做天天免费看| 一本大道一卡二大卡三卡免费| 亚洲视频在线观看| 在线视频免费国产成人| 你是我的城池营垒免费看| 亚洲乱码卡一卡二卡三| 亚洲精品动漫人成3d在线 | 亚洲日本国产综合高清| 亚洲一本大道无码av天堂| 精品女同一区二区三区免费站| 青青青亚洲精品国产|