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

項目中Axios二次封裝實例Demo

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

1.為什么做封裝?

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

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

  • 封裝思路不適合自身項目
  • 封裝后調用不方便

3.個人封裝demo

代碼結構【基于vue】

基本思路

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

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);
      });

總結:

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

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

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

代碼git:git

相關文章

  • vue寫一個組件

    vue寫一個組件

    這篇文章主要介紹了vue組寫一個組件,需要的朋友可以參考下
    2018-04-04
  • Vue判斷字符串(或數(shù)組)中是否包含某個元素的多種方法

    Vue判斷字符串(或數(shù)組)中是否包含某個元素的多種方法

    在我們前端日常開發(fā)中經常會遇到判斷一個字符串中是否包含某個元素的需求,下面這篇文章主要給大家介紹了關于Vue判斷字符串(或數(shù)組)中是否包含某個元素的多種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Vue實現(xiàn)模糊查詢的簡單示例

    Vue實現(xiàn)模糊查詢的簡單示例

    在Vue中實現(xiàn)模糊查詢,你可以使用JavaScript的filter和includes方法,結合Vue的v-for指令,本文給大家舉了一個簡單的示例,并通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • vue 實現(xiàn)超長文本截取,懸浮框提示

    vue 實現(xiàn)超長文本截取,懸浮框提示

    這篇文章主要介紹了vue 實現(xiàn)超長文本截取,懸浮框提示,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue中組件的數(shù)據共享分析講解

    Vue中組件的數(shù)據共享分析講解

    本文章向大家介紹vue組件中的數(shù)據共享,主要包括vue組件中的數(shù)據共享使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下
    2022-12-12
  • vue element 中的table動態(tài)渲染實現(xiàn)(動態(tài)表頭)

    vue element 中的table動態(tài)渲染實現(xiàn)(動態(tài)表頭)

    這篇文章主要介紹了vue element 中的table動態(tài)渲染實現(xiàn)(動態(tài)表頭),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • vue3常用的指令之v-bind和v-on指令用法

    vue3常用的指令之v-bind和v-on指令用法

    vue的v-on與v-bind,v-on就是用于綁定事件的,下面這篇文章主要給大家介紹了關于vue3常用的指令之v-bind和v-on指令用法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • vue2+elementui進行hover提示的使用

    vue2+elementui進行hover提示的使用

    本文主要介紹了vue2+elementui進行hover提示的使用,主要分為外部和內部,具有一定的參考價值,感興趣的可以了解一下
    2021-11-11
  • 用vue3封裝一個符合思維且簡單實用的彈出層

    用vue3封裝一個符合思維且簡單實用的彈出層

    最近新項目中需要一個彈窗組件,所以我就做了一個,下面這篇文章主要給大家介紹了關于如何利用vue3封裝一個符合思維且簡單實用的彈出層,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • vue-cli與webpack處理靜態(tài)資源的方法及webpack打包的坑

    vue-cli與webpack處理靜態(tài)資源的方法及webpack打包的坑

    這篇文章主要介紹了vue-cli與webpack處理靜態(tài)資源的方法,需要的朋友可以參考下
    2018-05-05

最新評論

龙江县| 普宁市| 宝山区| 平阴县| 泰州市| 青海省| 长泰县| 潞西市| 黔西县| 资中县| 惠州市| 河间市| 瓦房店市| 海宁市| 阿克陶县| 邓州市| 三原县| 江安县| 滦平县| 兰考县| 赣州市| 视频| 白玉县| 四平市| 天全县| 德保县| 乌兰察布市| 扬中市| 西乌| 齐齐哈尔市| 招远市| 贵德县| 双桥区| 观塘区| 宜阳县| 岳普湖县| 龙海市| 曲水县| 独山县| 隆林| 定远县|