欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1.為什么做封裝?

方便代碼整體調(diào)用、對請求做公共處理、個性化定制

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

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

3.個人封裝demo

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

基本思路

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

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

generateServer.js

import server from "../util/axiosConfig";
// 修改axios基本配置,請求配置
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:
      // 請求方法 '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ā)送請求
    userInfoServer.getUserName
      .getdata({
        queryParm: {
          id: 223,
        },
      })
      .then((res) => {
        console.log("res", res);
      });
    // 發(fā)送請求
    userInfoServer.getUserName
      .postdata({
        body: {
          id: 223,
        },
      })
      .then((res) => {
        console.log("res", res);
      });
    // 發(fā)送get請求,請求路徑帶參數(shù)
    userInfoServer.getUserList
      .getdata({
        queryParm: {
          id: 223,
        },
        pathParm: {
          id: 567,
        },
      })
      .then((res) => {
        console.log("res", res);
      });

總結(jié):

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

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

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

代碼git:git

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    elementUI el-form 數(shù)據(jù)無法賦值且不報錯解決方法

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

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

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

    vue中如何使用math.js

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

    vue3中v-model的用法詳解

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

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

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

最新評論