最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年11月13日 09:21:09   作者:FungLeo  
本篇文章主要介紹了Vue2 配置 Axios api 接口調(diào)用文件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前情回顧

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

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

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

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

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

封裝 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)嗎?我們新建了一個 src/api/index.js 這個空文本文件,就那么放在那里了。這里,我們給它填寫上內(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)
 }
}

 好,我們寫好這個文件之后,保存。

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

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

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

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

這次呢,我們沒有上來就調(diào)整 main.js 文件,因為原始文件就配置得比較好,我就沒有刻意的想要調(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 }
})

 好了,這樣,我們就可以在項目中使用我們封裝的 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é)果打印出來。

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

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue開發(fā)中關(guān)于axios的封裝過程

    vue開發(fā)中關(guān)于axios的封裝過程

    這篇文章主要介紹了vue開發(fā)中關(guān)于axios的封裝過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue使用GraphVis開發(fā)無限拓展的關(guān)系圖譜的實現(xiàn)

    vue使用GraphVis開發(fā)無限拓展的關(guān)系圖譜的實現(xiàn)

    本文主要介紹了vue使用GraphVis開發(fā)無限拓展的關(guān)系圖譜,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 關(guān)于Vue?CLI3中啟動cli服務(wù)參數(shù)說明

    關(guān)于Vue?CLI3中啟動cli服務(wù)參數(shù)說明

    這篇文章主要介紹了關(guān)于Vue?CLI3中啟動cli服務(wù)參數(shù)說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue在history模式下打包部署問題及解決方案

    vue在history模式下打包部署問題及解決方案

    這篇文章主要介紹了vue在history模式下打包部署問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Vue3使用el-table組件實現(xiàn)分頁、多選以及回顯功能

    Vue3使用el-table組件實現(xiàn)分頁、多選以及回顯功能

    這篇文章主要介紹了Vue3使用el-table組件實現(xiàn)分頁、多選以及回顯功能,文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-09-09
  • 通過實例解析vuejs如何實現(xiàn)調(diào)試代碼

    通過實例解析vuejs如何實現(xiàn)調(diào)試代碼

    這篇文章主要介紹了通過實例解析vuejs如何實現(xiàn)調(diào)試代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • vue3.0 CLI - 2.6 - 組件的復(fù)用入門教程

    vue3.0 CLI - 2.6 - 組件的復(fù)用入門教程

    這篇文章主要介紹了 vue3.0 CLI - 2.6 - 組件的復(fù)用,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-09-09
  • vue前端sku實現(xiàn)的方法小結(jié)

    vue前端sku實現(xiàn)的方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了vue前端sku實現(xiàn)的相關(guān)方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考一下
    2024-11-11
  • vue ssr服務(wù)端渲染(小白解惑)

    vue ssr服務(wù)端渲染(小白解惑)

    這篇文章主要介紹了vue ssr服務(wù)端渲染(小白解惑),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • mpvue 單文件頁面配置詳解

    mpvue 單文件頁面配置詳解

    這篇文章主要介紹了mpvue 單文件頁面配置詳解,本文將介紹如何在 mpvue 官方模板的基礎(chǔ)上,通過配置 mpvue-config-loader 來實現(xiàn)在 vue 文件內(nèi)書寫小程序的頁面配置,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論

图木舒克市| 西乌珠穆沁旗| 独山县| 石楼县| 莲花县| 台南县| 宝坻区| 什邡市| 承德县| 河池市| 江城| 柘荣县| 八宿县| 玉门市| 谷城县| 富宁县| 剑河县| 古浪县| 岐山县| 聂荣县| 饶平县| 永福县| 阳信县| 锡林浩特市| 衢州市| 广平县| 察隅县| 九江县| 吉木萨尔县| 武定县| 东源县| 环江| 南和县| 商水县| 贡山| 黄山市| 甘德县| 麻城市| 商河县| 南木林县| 德化县|