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

Vue中Axios的封裝與接口管理詳解

 更新時(shí)間:2022年03月30日 15:03:48   作者:啵啵丶  
在vue項(xiàng)目中和后臺(tái)交互獲取數(shù)據(jù)這塊,我們通常使用的是axios庫(kù),它是基于promise的http庫(kù),可運(yùn)行在瀏覽器端和node.js中,下面這篇文章主要給大家介紹了關(guān)于Vue中Axios的封裝與接口管理的相關(guān)資料,需要的朋友可以參考下

一、 Axios 的封裝

在 Vue 項(xiàng)目中,和后臺(tái)進(jìn)行數(shù)據(jù)交互是頻繁且不可或缺的,剛開始沒進(jìn)行 Axios 封裝的時(shí)候,每次請(qǐng)求后臺(tái)數(shù)據(jù)都是寫的完整的路徑,特別長(zhǎng),尤其是基準(zhǔn)地址,每次都要復(fù)制一遍加在前面,冗余特別大。封裝完 Axios 后,調(diào)用接口就簡(jiǎn)短多了,如果后期出現(xiàn)基準(zhǔn)地址的改變,只需要在配置中更改一次即可。

安裝 Axios

npm install axios

引入

我們先在 src 文件夾下創(chuàng)建一個(gè) utils 文件,再在該文件夾下創(chuàng)一個(gè) requery.js 文件

requery.js

import axios from 'axios'
axios.defaults.baseURL = "http://...."  // 這里寫接口基準(zhǔn)地址
export default axios

接口管理

我們?cè)僭?src 文件夾下創(chuàng)建一個(gè) api 文件,里面存放接口

我們把一個(gè)模塊相關(guān)的接口封裝在一個(gè) .js 文件中,例如我現(xiàn)在創(chuàng)建一個(gè)信息管理模塊的接口管理文件,取名為 messageManege.js

① 首先要在該文件中引入我們的 requery.js 文件

import request from '@/utils/requery'

② 封裝方法為 post 的接口

//獲取所有驗(yàn)收數(shù)據(jù)
export const getAllCheck = () => request({
    method:'post',
    url:"manager/selectAllCheckInfo"
})

③ 封裝方法為 get 的接口

//獲取所有延期數(shù)據(jù)
export const getAllDelay = () => request({
    url:"manager/selectAllPostponeInfo"
})

④ 封裝參數(shù)要拼接在鏈接后面的接口

//驗(yàn)收狀態(tài)處理
export const CheckHandle = (x1,x2) => {
    return request({
        method: 'post',
        url:`manager/check?status=${x1}&&id=${x2}`
    })
} 

⑤ 封裝請(qǐng)求頭為 "Content-Type": "application/json" 的接口

export const UpdateStage = data => {
    return request({
        method: 'post',
        url: 'stage/update',
        headers: {
            "Content-Type": "application/json",
        },
        data: data
    })
}

注意這里要傳入的 data 要轉(zhuǎn)換成 json 格式

統(tǒng)一暴露接口

在 src/api 的下面新建 index.js 文件用來統(tǒng)一暴露所有接口

import {
    getAllCheck,CheckHandle,getAllDelay,UpdateStage
} from './messageManage'
 
export const getAllCheckAPI = getAllCheck
 
export const CheckHandleAPI = CheckHandle
 
export const getAllDelayAPI = getAllDelay
 
export const UpdateStageAPI = UpdateStage

在組件中使用

① mounted() 中使用

  async mounted() {
    const res = await getAllCheckAPI();
    console.log(res.data)   // 打印返回的數(shù)據(jù)
  },

② 在普通方法中的使用

async StartProcess(s, i) {
      // 調(diào)用后端接口
      return CheckHandleAPI(s, i).then((res) => {
        if (res.status == 200) {
          this.$message.success("狀態(tài)修改成功!");
        } else {
          this.$message.error("狀態(tài)修改失敗!");
        }
      });
},

這樣 axios 的封裝和使用就完成啦~

補(bǔ)充:封裝get方法和post方法

我們常用的ajax請(qǐng)求方法有g(shù)et、post、put等方法,相信小伙伴都不會(huì)陌生。axios對(duì)應(yīng)的也有很多類似的方法,不清楚的可以看下文檔。但是為了簡(jiǎn)化我們的代碼,我們還是要對(duì)其進(jìn)行一個(gè)簡(jiǎn)單的封裝。下面我們主要封裝兩個(gè)方法:get和post。

get方法:我們通過定義一個(gè)get函數(shù),get函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)表示我們要請(qǐng)求的url地址,第二個(gè)參數(shù)是我們要攜帶的請(qǐng)求參數(shù)。get函數(shù)返回一個(gè)promise對(duì)象,當(dāng)axios其請(qǐng)求成功時(shí)resolve服務(wù)器返回 值,請(qǐng)求失敗時(shí)reject錯(cuò)誤值。最后通過export拋出get函數(shù)。

/**
 * get方法,對(duì)應(yīng)get請(qǐng)求
 * @param {String} url [請(qǐng)求的url地址]
 * @param {Object} params [請(qǐng)求時(shí)攜帶的參數(shù)]
 */
export function get(url, params){    
    return new Promise((resolve, reject) =>{        
        axios.get(url, {            
            params: params        
        }).then(res => {
            resolve(res.data);
        }).catch(err =>{
            reject(err.data)        
    })    
});}

post方法:原理同get基本一樣,但是要注意的是,post方法必須要使用對(duì)提交從參數(shù)對(duì)象進(jìn)行序列化的操作,所以這里我們通過node的qs模塊來序列化我們的參數(shù)。這個(gè)很重要,如果沒有序列化操作,后臺(tái)是拿不到你提交的數(shù)據(jù)的。這就是文章開頭我們import QS from 'qs';的原因。如果不明白序列化是什么意思的,就百度一下吧,答案一大堆。

/** 
 * post方法,對(duì)應(yīng)post請(qǐng)求 
 * @param {String} url [請(qǐng)求的url地址] 
 * @param {Object} params [請(qǐng)求時(shí)攜帶的參數(shù)] 
 */
export function post(url, params) {
    return new Promise((resolve, reject) => {
         axios.post(url, QS.stringify(params))
        .then(res => {
            resolve(res.data);
        })
        .catch(err =>{
            reject(err.data)
        })
    });
}

這里有個(gè)小細(xì)節(jié)說下,axios.get()方法和axios.post()在提交數(shù)據(jù)時(shí)參數(shù)的書寫方式還是有區(qū)別的。區(qū)別就是,get的第二個(gè)參數(shù)是一個(gè){},然后這個(gè)對(duì)象的params屬性值是一個(gè)參數(shù)對(duì)象的。而post的第二個(gè)參數(shù)就是一個(gè)參數(shù)對(duì)象。兩者略微的區(qū)別要留意哦!

總結(jié)

到此這篇關(guān)于Vue中Axios的封裝與接口管理的文章就介紹到這了,更多相關(guān)Vue Axios封裝與接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue集成lodop插件實(shí)現(xiàn)打印功能

    Vue集成lodop插件實(shí)現(xiàn)打印功能

    lodop 取意自“l(fā)oad or print”,是一款優(yōu)秀的 Web 打印控件。本文將在Vue中集成lodop插件實(shí)現(xiàn)打印功能,感興趣的小伙伴可以了解一下
    2023-01-01
  • vue中的按鈕綁定事件小案例

    vue中的按鈕綁定事件小案例

    這篇文章主要介紹了vue中的按鈕綁定事件小案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Vue使用ElementUI動(dòng)態(tài)修改table單元格背景顏色或文本顏色

    Vue使用ElementUI動(dòng)態(tài)修改table單元格背景顏色或文本顏色

    本文主要介紹了Vue使用ElementUI動(dòng)態(tài)修改table單元格背景顏色或文本顏色,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 解決VUE的對(duì)話框el-dialog點(diǎn)擊外部消失問題

    解決VUE的對(duì)話框el-dialog點(diǎn)擊外部消失問題

    這篇文章主要介紹了解決VUE的對(duì)話框el-dialog點(diǎn)擊外部消失問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue中的watch監(jiān)聽數(shù)據(jù)變化及watch中各屬性的詳解

    vue中的watch監(jiān)聽數(shù)據(jù)變化及watch中各屬性的詳解

    這篇文章主要介紹了vue中的watch監(jiān)聽數(shù)據(jù)變化及watch中的immediate、handler和deep屬性詳解,本文大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-09-09
  • vue3中單文件組件<script?setup>實(shí)例詳解

    vue3中單文件組件<script?setup>實(shí)例詳解

    <script?setup>是vue3中新引入的語(yǔ)法糖,目的是簡(jiǎn)化使用Composition?API時(shí)冗長(zhǎng)的模板代碼,下面這篇文章主要給大家介紹了關(guān)于vue3中單文件組件<script?setup>的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Vue3 (五)集成HTTP庫(kù)axios詳情

    Vue3 (五)集成HTTP庫(kù)axios詳情

    這篇文章主要講解Vue3 集成HTTP庫(kù)axios的相關(guān)內(nèi)容,本文講圍繞如何利用Vue3 集成HTTP庫(kù)axios的相關(guān)資料展開文章,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-10-10
  • vant時(shí)間控件使用方法詳解

    vant時(shí)間控件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vant時(shí)間控件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • vue生命周期實(shí)例小結(jié)

    vue生命周期實(shí)例小結(jié)

    這篇文章主要介紹了vue生命周期,結(jié)合實(shí)例形式分析了vue.js生命周期相關(guān)原理、步驟、函數(shù)與操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • Vue使用sign-canvas實(shí)現(xiàn)在線手寫簽名的實(shí)例

    Vue使用sign-canvas實(shí)現(xiàn)在線手寫簽名的實(shí)例

    sign-canvas?一個(gè)基于?canvas?開發(fā),封裝于?Vue?組件的通用手寫簽名板(電子簽名板),支持?pc?端和移動(dòng)端,本文給大家分享Vue使用sign-canvas實(shí)現(xiàn)在線手寫簽名,感興趣的朋友一起看看吧
    2022-05-05

最新評(píng)論

昌宁县| 开远市| 伊通| 南丹县| 普兰店市| 宁明县| 惠来县| 黑水县| 连南| 军事| 油尖旺区| 合阳县| 汉沽区| 沧州市| 山阴县| 芮城县| 五家渠市| 阿图什市| 泾川县| 自贡市| 平昌县| 恩平市| 怀远县| 苍南县| 闽清县| 于都县| 绥芬河市| 时尚| 乌什县| 金乡县| 如东县| 嘉峪关市| 沈丘县| 阳泉市| 凤冈县| 邳州市| 普兰县| 蚌埠市| 江孜县| 通化县| 彭山县|