国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【AntDesign】封裝全局異常處理-全局?jǐn)r截器

這篇具有很好參考價(jià)值的文章主要介紹了【AntDesign】封裝全局異常處理-全局?jǐn)r截器。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄
  • 場景
  • 1 定義全部異常處理類
  • 2 替換request引用
  • 3 代碼優(yōu)化
  • 總結(jié)

場景

本文前端用的是阿里的Ant-Design框架,其他框架也有全局?jǐn)r截器,思路是相同,具體實(shí)現(xiàn)自行百度下吧

因?yàn)槊看味夹枰{(diào)接口,都需要單獨(dú)處理異常情況(code !=0),因此前端需要對后端返回的通用響應(yīng)進(jìn)行統(tǒng)一處理,比如

  • 業(yè)務(wù)異常提示

    從 response取出code,根據(jù)code中集中處理錯(cuò)誤,比如提示用戶未登錄、參數(shù)為空等

  • 直接返回業(yè)務(wù)內(nèi)容

? 從 response取出data,進(jìn)行返回,而不是每次返回全部json內(nèi)容

1 定義全部異常處理類

新建新的ts類,比如globalRequest.ts

該類處理兩個(gè)情況

  • 所有請求攔截器(request.interceptors.request

    在請求后端API前,統(tǒng)一做處理,比如 改變url參數(shù),附帶統(tǒng)一參數(shù)等

  • 所有響應(yīng)攔截器(request.interceptors.response

    接收來自后端返回結(jié)果后,統(tǒng)一處理地方,比如異常處理提示

更詳細(xì)的 api 文檔: https://github.com/umijs/umi-request

/**
 * request 網(wǎng)絡(luò)請求工具
 * 更詳細(xì)的 api 文檔: https://github.com/umijs/umi-request
 */
import {extend} from 'umi-request'; // 需集成類
import {message} from "antd"; // 提示框
import {history} from "@@/core/history";
import {stringify} from "querystring";

/**
 * 配置request請求時(shí)的默認(rèn)參數(shù)
 */
const request = extend({
    credentials: 'include', // 默認(rèn)請求是否帶上cookie
    // requestType: 'form',
});

/**
 * 所有請求攔截器
 *  1. 在請求后端API前,統(tǒng)一做處理,比如 改變url參數(shù),附帶統(tǒng)一參數(shù)等
 */
request.interceptors.request.use((url, options) => {
    // 打印每次請求的API
    console.log(`do request url = ${url}`);

    return {
        url,
        options: {
            ...options,
            // headers: {},
        },
    };
});

/**
 * 所有響應(yīng)攔截器
 *  1. 接收來自后端返回結(jié)果后,統(tǒng)一處理地方,比如異常處理提示
 */
request.interceptors.response.use(async response => {
        const res = await response.clone().json();
        if (res.code === 0) {
            // 成功,則取出 data內(nèi)容 直接返回
            return res.data;
        }
        if (res.code === 40100) {       // 未登錄錯(cuò)誤碼
            message.error('請先登錄');
            // 跳轉(zhuǎn)登錄地址
            history.replace({
                pathname: '/user/login',
                search: stringify({
                    redirect: location.pathname,
                }),
            });
        } else {
            message.error(res.description)
        }
        return res.data;
    }
);

export default request;

2 替換request引用

將原來的request引用,替換成自己的request,在api.ts類中修改

原來

import {request} from 'umi';

替換成

import request from '@/plugins/globalRequest';

【AntDesign】封裝全局異常處理-全局?jǐn)r截器

3 代碼優(yōu)化

優(yōu)點(diǎn):

  • 省去每個(gè)業(yè)務(wù)異常處理
  • 直接返回 data 內(nèi)容

【AntDesign】封裝全局異常處理-全局?jǐn)r截器

總結(jié)

加了全局異常處理類后,實(shí)際上是通過requestresponse攔截器實(shí)現(xiàn)的,少處理很多冗余代碼,代碼更加簡潔和優(yōu)雅了!??!

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!文章來源地址http://www.zghlxwxcb.cn/news/detail-711993.html

到了這里,關(guān)于【AntDesign】封裝全局異常處理-全局?jǐn)r截器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringMVC的攔截器和異常處理器

    目錄 lerInterceptor 攔截器 1、攔截器的作用 2、攔截器的創(chuàng)建 3、攔截器的三個(gè)抽象方法 4、攔截器的配置 5、多個(gè)攔截器的執(zhí)行順序 SpringMVC的異常處理器 1、異常處理器概述 2、基于配置文件的異常處理 3、基于注解的異常處理 攔截器的作用時(shí)機(jī) SpringMVC的攔截器作用于? 控制器

    2024年02月02日
    瀏覽(40)
  • SpringMVC之?dāng)r截器和異常處理器

    學(xué)習(xí)的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您: 想系統(tǒng)/深入學(xué)習(xí)某技術(shù)知識點(diǎn)… 一個(gè)人摸索學(xué)習(xí)很難堅(jiān)持,想組團(tuán)高效學(xué)習(xí)… 想寫博客但無從下手,急需寫作干貨注入能量… 熱愛寫作,愿意讓自己成為更好

    2024年02月03日
    瀏覽(20)
  • 登錄頁面jwt密鑰,過濾器,攔截器,異常處理

    需求: 用戶未登錄時(shí),訪問其他也沒面,操作添加、刪除等操作時(shí),強(qiáng)行跳轉(zhuǎn)至登錄頁面。 實(shí)現(xiàn)方法: 1.使用Cookie,登錄后后端添加一個(gè)cookie,每次頁面判斷是否有cookie, 2。使用session,原理同上,只不過session是存儲在服務(wù)器里的,cookie是在瀏覽器里。 3。使用jwt令牌,登

    2023年04月25日
    瀏覽(26)
  • 【SpringMVC】統(tǒng)一異常處理 前后臺協(xié)議聯(lián)調(diào) 攔截器

    【SpringMVC】統(tǒng)一異常處理 前后臺協(xié)議聯(lián)調(diào) 攔截器

    1. 問題描述 在講解這一部分知識點(diǎn)之前,我們先來演示個(gè)效果,修改BookController類的 getById 方法 重新啟動(dòng)運(yùn)行項(xiàng)目,使用PostMan發(fā)送請求,當(dāng)傳入的id為1,則會出現(xiàn)如下效果: 前端接收到這個(gè)信息后和之前我們約定的格式不一致,這個(gè)問題該如何解決? 在解決問題之前,我們

    2024年02月11日
    瀏覽(24)
  • 【SpringMVC】統(tǒng)一異常處理 前后臺協(xié)議聯(lián)調(diào) 攔截器(文末贈書)

    【SpringMVC】統(tǒng)一異常處理 前后臺協(xié)議聯(lián)調(diào) 攔截器(文末贈書)

    1. 問題描述 在講解這一部分知識點(diǎn)之前,我們先來演示個(gè)效果,修改BookController類的 getById 方法 重新啟動(dòng)運(yùn)行項(xiàng)目,使用PostMan發(fā)送請求,當(dāng)傳入的id為1,則會出現(xiàn)如下效果: 前端接收到這個(gè)信息后和之前我們約定的格式不一致,這個(gè)問題該如何解決? 在解決問題之前,我們

    2024年02月09日
    瀏覽(27)
  • 解決攔截器拋出異常處理類的500狀態(tài)碼Html默認(rèn)格式響應(yīng) !

    解決方式 將Java對象轉(zhuǎn)換為JSON格式的響應(yīng),使用spring-mvc.xml配置適當(dāng)?shù)南⑥D(zhuǎn)換器。 問題出處的相關(guān)類如下 interceptor如下 ?自定義異常類 ?異常處理類

    2024年02月09日
    瀏覽(20)
  • 【Spring Boot】攔截器與統(tǒng)一功能處理:統(tǒng)一登錄驗(yàn)證、統(tǒng)一異常處理與統(tǒng)一數(shù)據(jù)返回格式

    【Spring Boot】攔截器與統(tǒng)一功能處理:統(tǒng)一登錄驗(yàn)證、統(tǒng)一異常處理與統(tǒng)一數(shù)據(jù)返回格式

    ?Spring AOP是一個(gè)基于面向切面編程的框架,用于將橫切性關(guān)注點(diǎn)(如日志記錄、事務(wù)管理)與業(yè)務(wù)邏輯分離,通過代理對象將這些關(guān)注點(diǎn)織入到目標(biāo)對象的方法執(zhí)行前后、拋出異?;蚍祷亟Y(jié)果時(shí)等特定位置執(zhí)行,從而提高程序的可復(fù)用性、可維護(hù)性和靈活性。但使用原生Sp

    2024年02月16日
    瀏覽(25)
  • SpringBoot -05 SpringBoot web相關(guān)配置(靜態(tài)資源訪問、統(tǒng)一異常處理、文件上傳、攔截器、統(tǒng)一跨域請求處理)

    小總結(jié) SpringBoot是一個(gè)基于Spring的工具集,去幫我們完成了大量的配置。在SpringBoot中有一個(gè)約定大于配置的概念,就是他把我們很多第三方框架幫我們寫好了,而且把我們整個(gè)第三方框架所需要的依賴全都通過起步依賴加進(jìn)去了。開發(fā)中只需要加入起步依賴就可以實(shí)現(xiàn)某個(gè)場

    2024年02月01日
    瀏覽(31)
  • Spring Boot 統(tǒng)一功能處理(攔截器實(shí)現(xiàn)用戶登錄權(quán)限的統(tǒng)一校驗(yàn)、統(tǒng)一異常返回、統(tǒng)一數(shù)據(jù)格式返回)

    Spring Boot 統(tǒng)一功能處理(攔截器實(shí)現(xiàn)用戶登錄權(quán)限的統(tǒng)一校驗(yàn)、統(tǒng)一異常返回、統(tǒng)一數(shù)據(jù)格式返回)

    目錄 1. 用戶登錄權(quán)限校驗(yàn) 1.1 最初用戶登錄權(quán)限效驗(yàn) 1.2 Spring AOP 用戶統(tǒng)?登錄驗(yàn)證 1.3 Spring 攔截器 (1)創(chuàng)建自定義攔截器 (2)將自定義攔截器添加到系統(tǒng)配置中,并設(shè)置攔截的規(guī)則 1.4 練習(xí):登錄攔截器 (1)實(shí)現(xiàn) UserController 實(shí)體類 (2)返回的登錄頁面:login.html (3)實(shí)

    2024年02月12日
    瀏覽(58)
  • axios不經(jīng)過全局?jǐn)r截器策略

    項(xiàng)目中使用的axios請求通常會根據(jù)項(xiàng)目情況進(jìn)行請求攔截request和響應(yīng)攔截response設(shè)置,比如對響應(yīng)攔截的值具體值返回給調(diào)用請求部分直接使用 如果一個(gè)請求接口不需要使用這個(gè)攔截器,axios沒有跳過攔截器等的設(shè)置,此時(shí)只需要?jiǎng)?chuàng)建一個(gè)新的axios實(shí)例進(jìn)行使用即可 使用原始

    2024年02月01日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包