亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

VueJs 搭建Axios接口請求工具

 更新時間:2017年11月20日 10:40:38   作者:王 二 麻 子  
axios 是一個基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端。今天我們來介紹VueJs 搭建Axios接口請求工具,需要的朋友參考下本文吧

axios 簡介

axios 是一個基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端,它本身具有以下特征:

  1. 從瀏覽器中創(chuàng)建 XMLHttpRequest
  2. 從 node.js 發(fā)出 http 請求
  3. 支持 Promise API
  4. 攔截請求和響應(yīng)
  5. 轉(zhuǎn)換請求和響應(yīng)數(shù)據(jù)
  6. 取消請求
  7. 自動轉(zhuǎn)換JSON數(shù)據(jù)
  8. 客戶端支持防止 CSRF/XSRF

上一章,我們認(rèn)識了項目的目錄結(jié)構(gòu),以及對項目的目錄結(jié)構(gòu)做了一些調(diào)整,已經(jīng)能把項目重新跑起來了。今天我們來搭建api接口調(diào)用工具Axios。Vue本身是不支持ajax調(diào)用的,如果你需要這些功能就需要安裝對應(yīng)的工具。

支持ajax請求的工具很多,像superagent和axios。今天我們用的就是axios,因為聽說最近網(wǎng)上大部分的教程書籍都使用的是axios,本身axios這個工具就已經(jīng)做了很好的優(yōu)化和封裝,但是在使用時,還是比較繁瑣,所以我們來重新封裝一下。

安裝Axios工具

cnpm install axios -D 

在安裝的時候,一定要切換進(jìn)入咱們的項目根目錄,再運(yùn)行安裝命令,然后如提示以上信息,則表示安裝完成。

封裝Axios工具

編輯src/api/index.js文件(我們在上一章整理目錄結(jié)構(gòu)時,在src/api/目錄新建了一個空的index.js文件),現(xiàn)在我們?yōu)樵撐募顚憙?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ù)
 這個函數(shù)每個項目都是不一樣的,我現(xiàn)在調(diào)整的是適用于
 https://cnodejs.org/api/v1 的接口,如果是其他接口
 需要根據(jù)接口的參數(shù)進(jìn)行調(diào)整。參考說明文檔地址:
 https://cnodejs.org/topic/5378720ed6e2d16149fa16bd
 主要是,不同的接口的成功標(biāo)識和失敗提示是不一致的。
 另外,不同的項目的處理方法也是不一致的,這里出錯就是簡單的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)
 }
}

更多關(guān)于AxIos的解釋請參見:https://github.com/mzabriskie/axios

配置Axios工具

我們在使用之前,需要在src/main.js中進(jìn)行簡單的配置,先來看一下原始的main.js文件

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
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 }
})

修改為:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
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 }
})

通過以上的配置,我們就可以在項目中使用axios工具了,接下來我們來測試一下這個工具。

使用Axios工具

我們來修改一下 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>

我們在Index.vue中向瀏覽器的控制臺輸入一些接口請求到的數(shù)據(jù),如果你和我也一樣,那說明我們的接口配置完成正確。如下圖:

如果你是按我的操作一步一步來,那最終結(jié)果應(yīng)該和我一樣。如果出錯請仔細(xì)檢查代碼。

相關(guān)文章

  • VUE識別訪問設(shè)備是pc端還是移動端的實現(xiàn)步驟

    VUE識別訪問設(shè)備是pc端還是移動端的實現(xiàn)步驟

    經(jīng)常在項目中會有支持pc與手機(jī)端需求,并且pc與手機(jī)端是兩個不一樣的頁面,這時就要求判斷設(shè)置,下面這篇文章主要給大家介紹了關(guān)于VUE識別訪問設(shè)備是pc端還是移動端的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • vue修改props數(shù)據(jù)報錯的問題及解決

    vue修改props數(shù)據(jù)報錯的問題及解決

    這篇文章主要介紹了vue修改props數(shù)據(jù)報錯的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue-cli項目優(yōu)化方法- 縮短首屏加載時間

    vue-cli項目優(yōu)化方法- 縮短首屏加載時間

    這篇文章主要介紹了vue-cli項目優(yōu)化 縮短首屏加載時間,需要的朋友可以參考下
    2018-04-04
  • 詳解vue2.0 transition 多個元素嵌套使用過渡

    詳解vue2.0 transition 多個元素嵌套使用過渡

    這篇文章主要介紹了詳解vue2.0 transition 多個元素嵌套使用過渡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • vue-router+vuex addRoutes實現(xiàn)路由動態(tài)加載及菜單動態(tài)加載

    vue-router+vuex addRoutes實現(xiàn)路由動態(tài)加載及菜單動態(tài)加載

    本篇文章主要介紹了vue-router+vuex addRoutes實現(xiàn)路由動態(tài)加載及菜單動態(tài)加載,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 詳解Vue.directive 自定義指令

    詳解Vue.directive 自定義指令

    這篇文章主要介紹了Vue.directive 自定義指令,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • vue中實現(xiàn)在外部調(diào)用methods的方法(推薦)

    vue中實現(xiàn)在外部調(diào)用methods的方法(推薦)

    下面小編就為大家分享一篇vue中實現(xiàn)在外部調(diào)用methods的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue3 provide和inject底層組件的值不是響應(yīng)式的處理詳解

    vue3 provide和inject底層組件的值不是響應(yīng)式的處理詳解

    這篇文章主要為大家介紹了vue3 provide和inject底層組件的值不是響應(yīng)式的處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 使用Vue進(jìn)行數(shù)據(jù)可視化實踐分享

    使用Vue進(jìn)行數(shù)據(jù)可視化實踐分享

    在當(dāng)今的數(shù)據(jù)驅(qū)動時代,數(shù)據(jù)可視化變得越來越重要,它能夠幫助我們更直觀地理解數(shù)據(jù),從而做出更好的決策,在這篇博客中,我們將探索如何使用 Vue 和一些常見的圖表庫(如 Chart.js)來制作漂亮的數(shù)據(jù)可視化效果,需要的朋友可以參考下
    2024-10-10
  • Vue3.0 手寫放大鏡效果

    Vue3.0 手寫放大鏡效果

    放大鏡在很多購物網(wǎng)站都可以看的到,本文主要實現(xiàn) 固定放大兩倍,鼠標(biāo)進(jìn)入到左側(cè)圖片區(qū)域的時候,遮罩層顯示,離開時,遮罩層隱藏,感興趣的可以了解一下
    2021-07-07

最新評論