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

vue3封裝request請(qǐng)求的完整案例

 更新時(shí)間:2024年09月29日 09:21:35   作者:小曲程序  
本文提供了如何將Vue3的靜態(tài)頁(yè)面集成到基于Vue2的若依項(xiàng)目中,并確保能夠訪問(wèn)Vue2的接口,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

需求:把vue3原生的靜態(tài)頁(yè) 集成到 vue2 的若依項(xiàng)目 并且可以訪問(wèn) vue2接口

在vue3 src 下的 utils 下 創(chuàng)建文件request.ts文件

import axios from "axios";
import { showMessage } from "./status"; // 引入狀態(tài)碼
import { ElMessage } from "element-plus"; // 引入提示框

// 設(shè)置接口超時(shí)時(shí)間
axios.defaults.timeout = 60000;
axios.defaults.baseURL = "/dev-api" || "";  // 自定義接口地址

const token = () => {
    if (sessionStorage.getItem("token")) {
        return sessionStorage.getItem("token");
    } else {
        return sessionStorage.getItem("token");
    }
};

const getCookie = (name) => {
    const value = `; ${document.cookie}`;
    const parts = value.split(`; ${name}=`);
    if (parts.length === 2) return parts.pop().split(';').shift();
};

//請(qǐng)求攔截
axios.interceptors.request.use(
    (config) => {
        // 配置請(qǐng)求頭
        config.headers["Content-Type"] = "application/json;charset=UTF-8";
        config.headers["token"] = token();
        //配置令牌等
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

// 響應(yīng)攔截
axios.interceptors.response.use(
    (response) => {
        return response;
    },
    (error) => {
        const { response } = error;
        if (response) {
            // 請(qǐng)求已發(fā)出,但是不在2xx的范圍
            showMessage(response.status); // 傳入響應(yīng)碼,匹配響應(yīng)碼對(duì)應(yīng)信息
            return Promise.reject(response.data);
        } else {
            ElMessage.warning("網(wǎng)絡(luò)連接異常,請(qǐng)稍后再試!");
        }
    }
);

//請(qǐng)求并導(dǎo)出
export function request(data: any) {
    return new Promise((resolve, reject) => {
        const promise = axios(data);
        //處理返回
        promise
            .then((res: any) => {
                resolve(res.data);
            })
            .catch((err: any) => {
                reject(err.data);
            });
    });
}

同級(jí)包下 新建狀態(tài)碼文件 status.ts

export const showMessage = (status: number | string): string => {
    let message: string = "";
    switch (status) {
        case 400:
            message = "請(qǐng)求錯(cuò)誤(400)";
            break;
        case 401:
            message = "未授權(quán),請(qǐng)重新登錄(401)";
            break;
        case 403:
            message = "拒絕訪問(wèn)(403)";
            break;
        case 404:
            message = "請(qǐng)求出錯(cuò)(404)";
            break;
        case 408:
            message = "請(qǐng)求超時(shí)(408)";
            break;
        case 500:
            message = "服務(wù)器錯(cuò)誤(500)";
            break;
        case 501:
            message = "服務(wù)未實(shí)現(xiàn)(501)";
            break;
        case 502:
            message = "網(wǎng)絡(luò)錯(cuò)誤(502)";
            break;
        case 503:
            message = "服務(wù)不可用(503)";
            break;
        case 504:
            message = "網(wǎng)絡(luò)超時(shí)(504)";
            break;
        case 505:
            message = "HTTP版本不受支持(505)";
            break;
        default:
            message = `連接出錯(cuò)(${status})!`;
    }
    return `${message},請(qǐng)檢查網(wǎng)絡(luò)或聯(lián)系管理員!`;
};

配置代理 

 注意放置位置

const proxy = {
  '/dev-api': {
    target: 'http://localhost:80', // 實(shí)際請(qǐng)求地址
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/dev-api/, ''),
  },
};

 server: {
    proxy,
    host: 'localhost',
    port: 80,
    open: true,
  },

本次案例使用 api下創(chuàng)建login.ts文件 (login名稱(chēng)未修改)

請(qǐng)求名稱(chēng)未修改 

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

export function login(data: any) {
    return request({
        url: "/system/encipher",
        method: "get",
        data,
    });
}

export function list(params: any) {
    return request({
        url: "/system/encipher/",
        method: "get",
        params,
    });
}

在對(duì)應(yīng)vue中 點(diǎn)擊事件中使用 

const onRootClick =   () => {
  var data = localStorage.getItem("datalist");
  var item = JSON.parse(data);
  var clinetIds;
  for (const itemElement of item) {
    if(itemElement.name==props.name){
      clinetIds = itemElement.clientId
    }
  }
  
  var userName = localStorage.getItem("username");
  list({userName: userName, clientId: clinetIds}).then((res: any) => {

   //執(zhí)行后續(xù)
  }).catch(() =>{
    alert("請(qǐng)求錯(cuò)誤")
  })
};

總結(jié) 

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

相關(guān)文章

  • vue使用ArcGis?API?for?js創(chuàng)建地圖實(shí)現(xiàn)示例

    vue使用ArcGis?API?for?js創(chuàng)建地圖實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了vue使用ArcGis?API?for?js創(chuàng)建地圖實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vue跳轉(zhuǎn)到詳情頁(yè)的兩種實(shí)現(xiàn)方法

    vue跳轉(zhuǎn)到詳情頁(yè)的兩種實(shí)現(xiàn)方法

    最近接觸了vue項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于vue跳轉(zhuǎn)到詳情頁(yè)的兩種實(shí)現(xiàn)方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Vuex中mutations與actions的區(qū)別詳解

    Vuex中mutations與actions的區(qū)別詳解

    下面小編就為大家分享一篇Vuex中mutations與actions的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • vue+php實(shí)現(xiàn)的微博留言功能示例

    vue+php實(shí)現(xiàn)的微博留言功能示例

    這篇文章主要介紹了vue+php實(shí)現(xiàn)的微博留言功能,結(jié)合完整實(shí)例形式分析了vue.js前臺(tái)留言及后臺(tái)php交互功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • element-ui中樣式覆蓋問(wèn)題的方法總結(jié)

    element-ui中樣式覆蓋問(wèn)題的方法總結(jié)

    我們?cè)谑褂胑lement-ui的時(shí)候經(jīng)常會(huì)遇到需要修改組件默認(rèn)樣式,下面這篇文章主要給大家介紹了關(guān)于element-ui中樣式覆蓋問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • vue項(xiàng)目中使用高德地圖的超詳細(xì)步驟

    vue項(xiàng)目中使用高德地圖的超詳細(xì)步驟

    在vue項(xiàng)目中添加高德地圖,對(duì)開(kāi)發(fā)地圖的開(kāi)發(fā)人員有一定幫助,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中使用高德地圖的超詳細(xì)步驟,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Element-ui樹(shù)形控件el-tree自定義增刪改和局部刷新及懶加載操作

    Element-ui樹(shù)形控件el-tree自定義增刪改和局部刷新及懶加載操作

    這篇文章主要介紹了Element-ui樹(shù)形控件el-tree自定義增刪改和局部刷新及懶加載操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • vue父組件異步獲取數(shù)據(jù)傳給子組件的方法

    vue父組件異步獲取數(shù)據(jù)傳給子組件的方法

    這篇文章主要介紹了vue父組件異步獲取數(shù)據(jù)傳給子組件,需要的朋友可以參考下
    2018-07-07
  • Vue3?中?PropType?的使用指南(示例詳解)

    Vue3?中?PropType?的使用指南(示例詳解)

    Vue3中PropType是TypeScript類(lèi)型工具,用于定義組件props的類(lèi)型,基本用法包括簡(jiǎn)單類(lèi)型、對(duì)象、數(shù)組和函數(shù)定義,高級(jí)用法涉及聯(lián)合類(lèi)型、嵌套對(duì)象和函數(shù)類(lèi)型,本文介紹Vue3中PropType的使用指南,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • VUE學(xué)習(xí)之Element-ui文件上傳實(shí)例詳解

    VUE學(xué)習(xí)之Element-ui文件上傳實(shí)例詳解

    今天進(jìn)行了element?文件上傳組件的運(yùn)用,寫(xiě)一下心得,下面這篇文章主要給大家介紹了關(guān)于VUE學(xué)習(xí)之Element-ui文件上傳的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10

最新評(píng)論

新竹市| 游戏| 山丹县| 临夏县| 万盛区| 玉屏| 遂昌县| 缙云县| 成武县| 土默特右旗| 夹江县| 苍梧县| 宜州市| 淳安县| 曲阳县| 赤峰市| 晋州市| 彭州市| 宝坻区| 司法| 云龙县| 灯塔市| 老河口市| 六盘水市| 来凤县| 盐山县| 调兵山市| 紫金县| 贵德县| 睢宁县| 蒙阴县| 河南省| 资源县| 兴文县| 宁强县| 台东市| 辽宁省| 乌海市| 四子王旗| 竹北市| 万盛区|