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

項(xiàng)目中Axios二次封裝實(shí)例Demo

 更新時(shí)間:2021年06月08日 11:41:14   作者:豐子楷  
vue項(xiàng)目經(jīng)常會(huì)用到axios來(lái)請(qǐng)求數(shù)據(jù),那么首先肯定需要對(duì)這個(gè)請(qǐng)求方法進(jìn)行一個(gè)二次封裝,這篇文章主要給大家介紹了關(guān)于項(xiàng)目中Axios二次封裝的相關(guān)資料,需要的朋友可以參考下

1.為什么做封裝?

方便代碼整體調(diào)用、對(duì)請(qǐng)求做公共處理、個(gè)性化定制

2.別人已經(jīng)封裝了很多,為什么不直接修改使用?

  • 封裝思路不適合自身項(xiàng)目
  • 封裝后調(diào)用不方便

3.個(gè)人封裝demo

代碼結(jié)構(gòu)【基于vue】

基本思路

將所有的請(qǐng)求接口地址按照文件分模塊存儲(chǔ),比如 request/module/user 用戶(hù)信息相關(guān)模塊【服務(wù)】

2.封裝方法、類(lèi)。給所有請(qǐng)求綁定常用的請(qǐng)求方法,和對(duì)請(qǐng)求url上的路徑參數(shù)做處理

generateServer.js

import server from "../util/axiosConfig";
// 修改axios基本配置,請(qǐng)求配置
function request({
  url,
  method = "get",
  queryParm = {},
  body = {},
  pathParm = null,
  config = {},
}) {
  const configAxios = {
    method,
    ...config,
    url: dealRequestUrl(url, pathParm),
  };
  switch (method) {
    case "get":
      configAxios.params = queryParm;
      break;

    default:
      // 請(qǐng)求方法 'PUT', 'POST', 和 'PATCH'
      configAxios.data = body;
      break;
  }
  console.log('configAxios', configAxios)
  return server(configAxios);
}

function dealRequestUrl(url, pathParm) {
  if (!pathParm) return url;
  let dealurl = url;
  Object.keys(pathParm).forEach((ele) => {
    dealurl = dealurl.replace(`{${ele}}`, pathParm[ele]);
  });
  return dealurl;
}
class GenerateServer {
  constructor(url) {
    this.url = url;
  }
  getdata(parm) {
    console.log('parm', parm)
    return request({ ...parm, method: "get", url: this.url });
  }
  postdata(parm) {
    return request({ ...parm, method: "post", url: this.url });
  }
  deletedata(parm) {
    return request({ ...parm, method: "delete", url: this.url });
  }
}
export default GenerateServer;

3.整體暴露出去

使用

    import { userInfoServer } from "./request";
    .
    .
    .

    // 發(fā)送請(qǐng)求
    userInfoServer.getUserName
      .getdata({
        queryParm: {
          id: 223,
        },
      })
      .then((res) => {
        console.log("res", res);
      });
    // 發(fā)送請(qǐng)求
    userInfoServer.getUserName
      .postdata({
        body: {
          id: 223,
        },
      })
      .then((res) => {
        console.log("res", res);
      });
    // 發(fā)送get請(qǐng)求,請(qǐng)求路徑帶參數(shù)
    userInfoServer.getUserList
      .getdata({
        queryParm: {
          id: 223,
        },
        pathParm: {
          id: 567,
        },
      })
      .then((res) => {
        console.log("res", res);
      });

總結(jié):

上述的封裝,主要是對(duì)請(qǐng)求拆分比較細(xì)致,便于維護(hù)。開(kāi)發(fā)時(shí)也比較方便。對(duì)于新接口需求,只需要在對(duì)應(yīng)模塊增加URl配置和響應(yīng)的生成器配置。便可以在業(yè)務(wù)代碼里面處理請(qǐng)求。對(duì)于路徑參數(shù)和請(qǐng)求體參數(shù)做了封裝,使用時(shí)不需要關(guān)心相應(yīng)的配置。

上述代碼沒(méi)有處理文件上傳、get請(qǐng)求參數(shù)字符串等情況。但是在對(duì)應(yīng)的axios里面增加配置即可。維護(hù)方便。

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

代碼git:git

相關(guān)文章

  • 一次用vue3簡(jiǎn)單封裝table組件的實(shí)戰(zhàn)過(guò)程

    一次用vue3簡(jiǎn)單封裝table組件的實(shí)戰(zhàn)過(guò)程

    之所以封裝全局組件是為了省事,所有的目的,全都是為了偷懶,下面這篇文章主要給大家介紹了關(guān)于用vue3簡(jiǎn)單封裝table組件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Vue elementui字體圖標(biāo)顯示問(wèn)題解決方案

    Vue elementui字體圖標(biāo)顯示問(wèn)題解決方案

    這篇文章主要介紹了Vue elementui字體圖標(biāo)顯示問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Vue實(shí)現(xiàn)菜單切換功能

    Vue實(shí)現(xiàn)菜單切換功能

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)菜單切換功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • vue中如何動(dòng)態(tài)添加樣式

    vue中如何動(dòng)態(tài)添加樣式

    這篇文章主要介紹了vue中如何動(dòng)態(tài)添加樣式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue3.0項(xiàng)目快速搭建的完整步驟記錄

    vue3.0項(xiàng)目快速搭建的完整步驟記錄

    這篇文章主要給大家介紹了關(guān)于vue3.0項(xiàng)目快速搭建的相關(guān)資料,本文通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-12-12
  • elementUI el-form 數(shù)據(jù)無(wú)法賦值且不報(bào)錯(cuò)解決方法

    elementUI el-form 數(shù)據(jù)無(wú)法賦值且不報(bào)錯(cuò)解決方法

    本文主要介紹了elementUI el-form 數(shù)據(jù)無(wú)法賦值且不報(bào)錯(cuò)解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • 微信內(nèi)置開(kāi)發(fā) iOS修改鍵盤(pán)換行為搜索的解決方案

    微信內(nèi)置開(kāi)發(fā) iOS修改鍵盤(pán)換行為搜索的解決方案

    今天小編就為大家分享一篇微信內(nèi)置開(kāi)發(fā) iOS修改鍵盤(pán)換行為搜索的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue中如何使用math.js

    vue中如何使用math.js

    這篇文章主要介紹了vue中如何使用math.js問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue3中v-model的用法詳解

    vue3中v-model的用法詳解

    vue 提供了很多自定義指令,大大方便了我們的開(kāi)發(fā),其中最常用的也就是 v-model,他可以在組件上使用以實(shí)現(xiàn)雙向綁定。它可以綁定多種數(shù)據(jù)結(jié)構(gòu), 今天總結(jié)一下用法
    2023-04-04
  • vue+iview實(shí)現(xiàn)分頁(yè)及查詢(xún)功能

    vue+iview實(shí)現(xiàn)分頁(yè)及查詢(xún)功能

    這篇文章主要為大家詳細(xì)介紹了vue+iview實(shí)現(xiàn)分頁(yè)及查詢(xún)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評(píng)論