在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于接口冪等性解決方案

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-09-30 16:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

接口冪等性是指無論調(diào)用接口的次數(shù)是一次還是多次,對于同一資源的操作都只會(huì)產(chǎn)生一次結(jié)果。換句話說,多次重復(fù)調(diào)用相同的接口請求應(yīng)該具有與單次請求相同的效果,不會(huì)導(dǎo)致不一致或副作用的發(fā)生。

今天我們使用AI幫我們?nèi)?chuàng)建一個(gè)自定義 注解 ,可以防止接口30秒內(nèi)的重復(fù)請求,并采用Redis作為緩存。

提問

話不多說,直接提問:

圖片

等待數(shù)分鐘后。。。

1.創(chuàng)建自定義注解 其中包括接口保護(hù)時(shí)長,開啟防止重復(fù)提交保護(hù)等。

圖片

2.然后創(chuàng)建攔截器

圖片

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

@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;
    }
 //創(chuàng)建redis 緩存key
    private String buildKey(HttpServletRequest request) throws IOException, NoSuchAlgorithmException {
        String key = useRequestMD5 ? hashRequest(request) : request.getRequestURI();
        return "repeat-submit:" + key;
    }

 //對請求做hash運(yùn)算
    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.注冊攔截器

圖片

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

上面就是最關(guān)鍵的代碼了。

接入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());
    }
}

本地起一個(gè)Redis,然后啟動(dòng)本地的SpringBoot項(xiàng)目進(jìn)行測試,

圖片

本地接口測試:30秒內(nèi)重復(fù)請求會(huì)需要直接被攔截

圖片

Redis中緩存的KEY如下:

圖片

以上就是利用AI為我們生成的一個(gè)簡單的接口短時(shí)間內(nèi)防止重復(fù)提交的注解代碼!

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

接口冪等性解決方案

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

圖片

關(guān)于這個(gè)回答,大家覺得怎么樣?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8970

    瀏覽量

    153433
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    245

    瀏覽量

    27094
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    34733

    瀏覽量

    276801
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4892

    瀏覽量

    70426
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    385

    瀏覽量

    11375
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    立體智慧倉儲(chǔ)解決方案.#云計(jì)算

    解決方案智能設(shè)備
    學(xué)習(xí)電子知識(shí)
    發(fā)布于 :2022年10月06日 19:45:47

    離線計(jì)算中的和DataWorks中的相關(guān)事項(xiàng)

    考慮到,導(dǎo)致對應(yīng)的單據(jù)有兩條確認(rèn)記錄。點(diǎn)此查看原文:http://click.aliyun.com/m/42758/概念這個(gè)詞在軟
    發(fā)表于 02-27 13:24

    接口RFID解決方案提升醫(yī)療設(shè)備實(shí)用及使用壽命

    ,而這正是一個(gè)雙接口RFID解決方案所擅長的領(lǐng)域。作為連接系統(tǒng)內(nèi)部工作的網(wǎng)關(guān),雙接口RFID解決方案與監(jiān)控設(shè)備相連無需糾纏不清的連接線,因此可提高監(jiān)控儀的實(shí)用
    發(fā)表于 05-29 06:54

    I/O接口ESD靜電防護(hù)解決方案

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

    HDMI接口靜電保護(hù)解決方案

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

    有源DASCPRI接口解決方案

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

    在高并發(fā)下怎么保證接口?

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

    什么是?關(guān)于接口解決方案

    這里的樂觀鎖指的是用樂觀鎖的原理去實(shí)現(xiàn),為數(shù)據(jù)字段增加一個(gè)version字段,當(dāng)數(shù)據(jù)需要更新時(shí),先去數(shù)據(jù)庫里獲取此時(shí)的version版本號
    發(fā)表于 10-09 10:19 ?2222次閱讀

    分析解決)的方法

    這個(gè)概念,是一個(gè)數(shù)學(xué)上的概念,即:f……(f(f(x))) = f(x)。用在計(jì)算機(jī)領(lǐng)域,指的是系統(tǒng)里的接口或方法對外的一種承諾,使用相同參數(shù)對同一資源重復(fù)調(diào)用某個(gè)接口或方法的結(jié)果
    的頭像 發(fā)表于 10-14 10:08 ?1291次閱讀

    Spring Boot實(shí)現(xiàn)接口的4種方案

    是一個(gè)數(shù)學(xué)與計(jì)算機(jī)學(xué)概念,在數(shù)學(xué)中某一元運(yùn)算為時(shí),其作用在任一元素兩次后會(huì)和其作用一次的結(jié)果相同。
    的頭像 發(fā)表于 11-08 10:21 ?1189次閱讀

    什么是?的實(shí)現(xiàn)原理

    在編程中一個(gè)操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。函數(shù),或
    發(fā)表于 01-05 10:40 ?6917次閱讀

    一個(gè)注解,優(yōu)雅的實(shí)現(xiàn)接口!

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

    實(shí)用RTD接口解決方案

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

    為什么要實(shí)現(xiàn)校驗(yàn) 如何實(shí)現(xiàn)接口校驗(yàn)

    前端重復(fù)提交表單:在填寫一些表格時(shí)候,用戶填寫完成提交,很多時(shí)候會(huì)因網(wǎng)絡(luò)波動(dòng)沒有及時(shí)對用戶做出提交成功響應(yīng),致使用戶認(rèn)為沒有成功提交,然后一直點(diǎn)提交按鈕,這時(shí)就會(huì)發(fā)生重復(fù)提交表單請求。
    的頭像 發(fā)表于 02-20 14:14 ?1602次閱讀

    探索LabVIEW編程接口原理與實(shí)踐

    原來是數(shù)學(xué)上的概念,在編程領(lǐng)域可以理解為:多次請求某一個(gè)資源或執(zhí)行某一個(gè)操作時(shí)應(yīng)該具有唯一同樣結(jié)果,也就是說,其任意多次執(zhí)行對資源
    的頭像 發(fā)表于 02-29 10:24 ?904次閱讀
    探索LabVIEW編程<b class='flag-5'>接口</b><b class='flag-5'>冪</b><b class='flag-5'>等</b><b class='flag-5'>性</b>原理與實(shí)踐
    主站蜘蛛池模板: aa在线视频 | 手机看片国产免费久久网 | 亚洲成a人在线播放www | 欧美高h | 久久久免费视频播放 | 亚洲午夜久久久久久91 | 四虎1515hh永久久免费 | 韩国午夜精品理论片西瓜 | 夜夜操夜夜爽 | 片黄免费| 免费国产不卡午夜福在线观看 | 天天舔天天射 | 免费网站黄 | xxxxxhd69日本护士 | 激情五月婷婷综合网 | 天天摸天天操免费播放小视频 | 亚洲爽爽网站 | 五月综合激情视频在线观看 | 五月激情六月丁香 | 在线观看www妖精免费福利视频 | 国产亚洲精品久久久久久牛牛 | 丁香狠狠| 2021天天操 | 国产精品资源网 | 扒开双腿疯狂进出爽爽爽 | 天天操天天干天天插 | 亚洲mm8成为人影院 亚洲qingse中文在线 | 特黄免费| 久久xxx| 黄色视屏免费在线观看 | 啪啪黄色 | 欧美性hd| 欧美在线精品一区二区三区 | 欧美三级图片 | 交在线观看网站视频 | 黄色福利站 | 一本大道加勒比久久综合 | 欧美一级乱理片免费观看 | 亚洲人成网站色7799在线播放 | 色吧在线观看 | 五月婷婷丁香花 |