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

Vuejs如何通過Axios請求數(shù)據(jù)

 更新時(shí)間:2022年04月06日 11:43:08   作者:I?Tech?You,我教你  
這篇文章主要介紹了Vuejs如何通過Axios請求數(shù)據(jù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

通過Axios請求數(shù)據(jù)

我們來搭建api接口調(diào)用工具Axios。Vue本身是不支持ajax調(diào)用的,如果你需要這些功能就需要安裝對應(yīng)的工具。

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

安裝Axios工具

cnpm install axios -D

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

封裝Axios工具

編輯src/api/index.js文件(我們在上一章整理目錄結(jié)構(gòu)時(shí),在src/api/目錄新建了一個(gè)空的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ù)
  這個(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)識和失敗提示是不一致的。
  另外,不同的項(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)
    }
}

更多關(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 }
})

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

使用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中向?yàn)g覽器的控制臺輸入一些接口請求到的數(shù)據(jù),如果你和我也一樣,那說明我們的接口配置完成正確。如下圖:

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

Vue請求數(shù)據(jù)(Axios)

什么是Axios

Axios 是一個(gè)基于 Promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。

Vue.js 2.0 版本推薦使用 axios 來完成 ajax 請求。

引入

引入時(shí)不必糾結(jié)與vue的先后順序,它并不依賴與vue

使用方法

1.get請求

get中就只有一個(gè)參數(shù),這個(gè)參數(shù)中包括前面的地址,后面?zhèn)鞯膮?shù)用“?”拼接在地址后

? ? ? ? created() {
? ? ? ? ? axios
? ? ? ? ? ? .get(
? ? ? ? ? ? ? "http://wkt.myhope365.com/weChat/applet/course/banner/list?number=4"
? ? ? ? ? ? )
? ? ? ? ? ? .then((res) => {
? ? ? ? ? ? ? ? console.log(res);
? ? ? ? ? ? ? this.imgList = res.data.data;
? ? ? ? ? ? });
? ? ? ? },

2.post請求(form格式)

要先定義一個(gè)form把想要傳的參數(shù)放進(jìn)去

有兩個(gè)參數(shù):請求地址,form

? ? ? ? ?created() {
?
? ? ? ? ? let from = new FormData();
? ? ? ? ? from.append("type", "boutique");
? ? ? ? ? from.append("pageNum", 2);
? ? ? ? ? from.append("pageSize", 10);
? ? ? ? ? axios
? ? ? ? ? ? .post("http://wkt.myhope365.com/weChat/applet/course/list/type", from)
? ? ? ? ? ? .then((res) => {
? ? ? ? ? ? ? console.log(res);
? ? ? ? ? ? ? this.courseList = res.data.rows;
? ? ? ? ? ? // ? console.log(this.courseList);
? ? ? ? ? ? });
? ? ? ? },

3.post請求(JOSN格式)

這種情況下,有兩個(gè)參數(shù):請求地址,{傳的參數(shù)}

但傳的參數(shù)要以JOSN的格式

created() {? ? ? ? ??
? ? ? ? ? axios
? ? ? ? ? ? .post("http://wkt.myhope365.com/weChat/applet/subject/list", {
? ? ? ? ? ? ? enable: 1,
? ? ? ? ? ? })
? ? ? ? ? ? .then((res) => {
? ? ? ? ? ? ? console.log(res);
? ? ? ? ? ? ? this.list = res.data.rows;
? ? ? ? ? ? ? console.log(this.list);
? ? ? ? ? ? });
? ? ? ? },

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue?卸載eslint方式

    vue?卸載eslint方式

    這篇文章主要介紹了vue?卸載eslint方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue使用echarts畫組織結(jié)構(gòu)圖

    vue使用echarts畫組織結(jié)構(gòu)圖

    這篇文章主要介紹了vue使用echarts畫組織結(jié)構(gòu)圖的示例,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-02-02
  • vue3如何優(yōu)雅的實(shí)現(xiàn)移動(dòng)端登錄注冊模塊

    vue3如何優(yōu)雅的實(shí)現(xiàn)移動(dòng)端登錄注冊模塊

    這篇文章主要給大家介紹了關(guān)于vue3如何優(yōu)雅的實(shí)現(xiàn)移動(dòng)端登錄注冊模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vue3 vite配置跨域及不生效問題解決

    vue3 vite配置跨域及不生效問題解決

    這篇文章主要介紹了vue3 vite配置跨域以及不生效問題,本文給大家分享完美解決方案,需要的朋友可以參考下
    2023-07-07
  • vue3升級常見問題詳細(xì)匯總

    vue3升級常見問題詳細(xì)匯總

    隨著vue3?的發(fā)布和越來越多項(xiàng)目的使用,之前使用?vue2?的項(xiàng)目也不能拉下,vue2?升級?vue3?迫在眉睫,下面這篇文章主要給大家介紹了關(guān)于vue3升級常見問題的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • vue項(xiàng)目如何刪除無用的依賴詳解

    vue項(xiàng)目如何刪除無用的依賴詳解

    vue是目前非常流行的前端開發(fā)框架,隨著技術(shù)的不斷更新,我們也需要更新我們的vue項(xiàng)目,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目如何刪除無用的依賴的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • 如何理解Vue簡單狀態(tài)管理之store模式

    如何理解Vue簡單狀態(tài)管理之store模式

    狀態(tài)管理也就是數(shù)據(jù)狀態(tài)管理,vue應(yīng)用程序的各組件之間經(jīng)常需要進(jìn)行通信,除了v-on、EventBus等通信方式外,可以采用數(shù)據(jù)共享的方式進(jìn)行通信。這種簡單的數(shù)據(jù)共享模式就是store模式。
    2021-05-05
  • vue項(xiàng)目初始化到登錄login頁面的示例

    vue項(xiàng)目初始化到登錄login頁面的示例

    今天小編就為大家分享一篇vue項(xiàng)目初始化到登錄login頁面的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • ant design vue中日期選擇框混合時(shí)間選擇器的用法說明

    ant design vue中日期選擇框混合時(shí)間選擇器的用法說明

    這篇文章主要介紹了ant design vue中日期選擇框混合時(shí)間選擇器的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 詳解Vue computed計(jì)算屬性是什么

    詳解Vue computed計(jì)算屬性是什么

    在vue中,有時(shí)候你需要對data中的數(shù)據(jù)進(jìn)行處理,或者對抓取的數(shù)據(jù)進(jìn)行處理之后再掛載呈現(xiàn)到標(biāo)簽中,這時(shí)候你就需要計(jì)算屬性了,當(dāng)然看到這里你可能還是不了解那下面我舉幾個(gè)實(shí)例并附代碼解釋
    2023-03-03

最新評論

内黄县| 和平县| 兴业县| 胶南市| 会同县| 长治市| 万宁市| 汝城县| 武宣县| 乌苏市| 巨鹿县| 政和县| 济阳县| 涟水县| 连城县| 西贡区| 高碑店市| 永康市| 东阿县| 泰安市| 融水| 宁晋县| 西城区| 安西县| 六盘水市| 安义县| 略阳县| 壤塘县| 河池市| 沽源县| 贡嘎县| 辰溪县| 左权县| 安康市| 海淀区| 肥东县| 昭觉县| 靖宇县| 阿克陶县| 江门市| 寿宁县|