色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于接口冪等性解決方案

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-09-30 16:27 ? 次閱讀

接口冪等性是指無論調用接口的次數是一次還是多次,對于同一資源的操作都只會產生一次結果。換句話說,多次重復調用相同的接口請求應該具有與單次請求相同的效果,不會導致不一致或副作用的發生。

今天我們使用AI幫我們去創建一個自定義 注解 ,可以防止接口30秒內的重復請求,并采用Redis作為緩存。

提問

話不多說,直接提問:

圖片

等待數分鐘后。。。

1.創建自定義注解 其中包括接口保護時長,開啟防止重復提交保護等。

圖片

2.然后創建攔截器

圖片

這里我們貼出攔截器的核心代碼:

@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if (handler instanceof HandlerMethod) {
            HandlerMethod handlerMethod = (HandlerMethod) handler;
            RepeatSubmit annotation = handlerMethod.getMethodAnnotation(RepeatSubmit.class);
            if (annotation != null && annotation.enable()) {
                String key = buildKey(request);
                if (StringUtils.hasText(redisTemplate.opsForValue().get(key))) {
                    response.getWriter().write("repeat request, please try again later!");
                    return false;
                } else {
                    redisTemplate.opsForValue().set(key, Arrays.toString(request.getInputStream().readAllBytes()), annotation.timeout(), TimeUnit.SECONDS);
                }
            }
        }
        return true;
    }
 //創建redis 緩存key
    private String buildKey(HttpServletRequest request) throws IOException, NoSuchAlgorithmException {
        String key = useRequestMD5 ? hashRequest(request) : request.getRequestURI();
        return "repeat-submit:" + key;
    }

 //對請求做hash運算
    private String hashRequest(HttpServletRequest request) throws IOException, NoSuchAlgorithmException {
        byte[] hashBytes = MessageDigest.getInstance("MD5").digest(request.getInputStream().readAllBytes());
        StringBuilder sb = new StringBuilder();
        for (byte b : hashBytes) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    }

3.注冊攔截器

圖片

最后給出的解釋與使用方法。

上面就是最關鍵的代碼了。

接入Redis

下面我們接入Redis。最精簡的配置版本

spring:
  data:
    redis:
      host: 127.0.0.1 
      port: 6379

接口使用注解

@RestController
public class RepeatTestController {

    @RepeatSubmit
    @GetMapping("/hello/mono1")
    public Mono< String > mono(){
        return Mono.just("Hello Mono -  Java North");
    }

    @RepeatSubmit
    @PostMapping ("/hello/mono1")
    public Mono< String > mono1(@RequestBody User user){
        return Mono.just("Hello Mono -  Java North-"+user.getName());
    }
}

本地起一個Redis,然后啟動本地的SpringBoot項目進行測試,

圖片

本地接口測試:30秒內重復請求會需要直接被攔截

圖片

Redis中緩存的KEY如下:

圖片

以上就是利用AI為我們生成的一個簡單的接口短時間內防止重復提交的注解代碼!

相關代碼在文章末尾,需要的話可以白嫖哈!

接口冪等性解決方案

下面問一下接口冪等性解決方案,

圖片

關于這個回答,大家覺得怎么樣?

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8582

    瀏覽量

    151071
  • 緩存
    +關注

    關注

    1

    文章

    239

    瀏覽量

    26674
  • AI
    AI
    +關注

    關注

    87

    文章

    30805

    瀏覽量

    268942
  • 代碼
    +關注

    關注

    30

    文章

    4782

    瀏覽量

    68546
  • Redis
    +關注

    關注

    0

    文章

    374

    瀏覽量

    10871
收藏 人收藏

    評論

    相關推薦

    立體智慧倉儲解決方案.#云計算

    解決方案智能設備
    學習電子知識
    發布于 :2022年10月06日 19:45:47

    離線計算中的和DataWorks中的相關事項

    考慮到,導致對應的單據有兩條確認記錄。點此查看原文:http://click.aliyun.com/m/42758/概念這個詞在軟
    發表于 02-27 13:24

    接口RFID解決方案提升醫療設備實用及使用壽命

    ,而這正是一個雙接口RFID解決方案所擅長的領域。作為連接系統內部工作的網關,雙接口RFID解決方案與監控設備相連無需糾纏不清的連接線,因此可提高監控儀的實用
    發表于 05-29 06:54

    I/O接口ESD靜電防護解決方案

    的危害,為便攜式消費電子、電腦、汽車電子產品的I/O接口提供理想的保護解決方案。接下來分享:I/O接口ESD靜電保護方案圖。I/O
    發表于 10-29 13:43

    HDMI接口靜電保護解決方案

    和發射器IC芯片采用的是亞微米CMOS工藝制造而成的,而亞微米CMOS十分地敏感,為此需要借助ESD靜電保護器件和ESD靜電保護解決方案為其保駕護航。機頂盒STB、電視LCD終端應用極其容易受到ESD
    發表于 12-31 15:57

    有源DASCPRI接口解決方案

    在此前合作的基礎上,康普與諾基亞再次攜手開發了一款旨在降低基站收發器系統(BTS)與有源分布式天線系統(DAS)之間的接口復雜解決方案
    發表于 08-20 16:19 ?758次閱讀

    在高并發下怎么保證接口

    前言 接口性問題,對于開發人員來說,是一個跟語言無關的公共問題。本文分享了一些解決這類問題非常實用的辦法,絕大部分內容我在項目中實踐過的,給有需要的小伙伴一個參考。 不知道你有沒有遇到過這些場景
    的頭像 發表于 05-14 10:23 ?1809次閱讀
    在高并發下怎么保證<b class='flag-5'>接口</b>的<b class='flag-5'>冪</b><b class='flag-5'>等</b><b class='flag-5'>性</b>?

    什么是?關于接口解決方案

    這里的樂觀鎖指的是用樂觀鎖的原理去實現,為數據字段增加一個version字段,當數據需要更新時,先去數據庫里獲取此時的version版本號
    發表于 10-09 10:19 ?1946次閱讀

    分析解決)的方法

    這個概念,是一個數學上的概念,即:f……(f(f(x))) = f(x)。用在計算機領域,指的是系統里的接口或方法對外的一種承諾,使用相同參數對同一資源重復調用某個接口或方法的結果
    的頭像 發表于 10-14 10:08 ?944次閱讀

    Spring Boot實現接口的4種方案

    是一個數學與計算機學概念,在數學中某一元運算為時,其作用在任一元素兩次后會和其作用一次的結果相同。
    的頭像 發表于 11-08 10:21 ?998次閱讀

    什么是的實現原理

    在編程中一個操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同。函數,或
    發表于 01-05 10:40 ?6124次閱讀

    一個注解,優雅的實現接口

    除了查詢和刪除之外,還有更新操作,同樣的更新操作在大多數場景下也是天然的,其例外是也會存在ABA的問題,更重要的是,比如執行update table set a = a + 1 where v = 1這樣的更新就非等了。
    的頭像 發表于 08-26 14:36 ?895次閱讀
    一個注解,優雅的實現<b class='flag-5'>接口</b><b class='flag-5'>冪</b><b class='flag-5'>等</b><b class='flag-5'>性</b>!

    實用RTD接口解決方案

    電子發燒友網站提供《實用RTD接口解決方案.pdf》資料免費下載
    發表于 11-16 16:05 ?1次下載
    實用RTD<b class='flag-5'>接口</b><b class='flag-5'>解決方案</b>

    為什么要實現校驗 如何實現接口校驗

    前端重復提交表單:在填寫一些表格時候,用戶填寫完成提交,很多時候會因網絡波動沒有及時對用戶做出提交成功響應,致使用戶認為沒有成功提交,然后一直點提交按鈕,這時就會發生重復提交表單請求。
    的頭像 發表于 02-20 14:14 ?1195次閱讀

    探索LabVIEW編程接口原理與實踐

    原來是數學上的概念,在編程領域可以理解為:多次請求某一個資源或執行某一個操作時應該具有唯一同樣結果,也就是說,其任意多次執行對資源
    的頭像 發表于 02-29 10:24 ?610次閱讀
    探索LabVIEW編程<b class='flag-5'>接口</b><b class='flag-5'>冪</b><b class='flag-5'>等</b><b class='flag-5'>性</b>原理與實踐
    主站蜘蛛池模板: 亚洲精品m在线观看| adc影院在线| 色尼玛亚洲| 老人洗澡自拍xxx互摸| 国产成人无码区免费内射一片色欲| 亚洲视频无码中字在线| 日韩欧无码一区二区三区免费不卡| 精品亚洲午夜久久久久| 国产精品99久久久久久WWW| 99国产热视频在线观看| 亚洲一区自拍高清亚洲精品| 少妇精油按摩| 青青草 久久久| 蜜桃成人在线| 久久久久久久99精品免费观看| 国产精品久久久久久免费字体 | 91视频18| 野花社区WWW韩国日本| 性欧美金发洋妞xxxxbbbb| 日本亚洲中文字幕无码区| 男女作爱在线播放免费网页版观看 | 伊人激情综合网| 亚洲国产在线精品国偷产拍| 少妇的肉体AA片免费| 日本久久久久久久做爰片日本| 美女图片131亚洲午夜| 久久视热频国只有精品| 精品成人片深夜| 国产亚洲精品首页在线播放| 国产高清精品自在久久| 俄罗斯12一15处交| 抽插H浊水H嫩B父皇| 成人精品视频在线观看| china野外18:19| japanese from色系| A级超碰视频在线观看| 99久久精品国产亚洲AV| 97超碰免费人妻中文| 97国产成人精品免费视频| 98色精品视频在线| 97国产视频|