@RestControllerpublic class RepeatTestController {@RepeatSubmit@GetMapping("/hello/mono1")public Monomono(){return Mono.just("Hello Mono -Java North");}@RepeatSubmit@PostMapping ("/hello/mono1")public Mono mono1(@RequestBody User user){return Mono.just("Hello Mono -Java North-"+user.getName());}}



Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.
Hallo zusammen, ich bin großartig.
Unabhängig davon, wie oft die Schnittstelle einmal oder mehrmals aufgerufen wird, stellt die Idempotenz der Schnittstelle sicher, dass Vorgänge auf derselben Ressource nur zum gleichen Ergebnis führen. Wiederholte Aufrufe derselben Schnittstellenanforderung mehrmals sollten die gleichen Ergebnisse wie eine einzelne Anforderung haben und keine Inkonsistenzen oder Nebenwirkungen verursachen.
Heute haben wir mithilfe künstlicher Intelligenz eine benutzerdefinierte Anmerkung erstellt, um zu verhindern, dass die Schnittstelle innerhalb von 30 Sekunden mehrmals angefordert wird, und Redis als Cache verwendet.
Frage
Sagen Sie nicht viel, fragen Sie einfach direkt:
Warten Sie ein paar Minuten. . .
1. Erstellen Sie benutzerdefinierte Anmerkungen, einschließlich der Dauer des Schnittstellenschutzes, der Aktivierung des Schutzes vor wiederholten Übermittlungen usw.
2. Dann erstellen Sie den Interceptor
Hier veröffentlichen wir den Kerncode des Interceptors:
@Overridepublic 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 缓存keyprivate 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
Die letzte Erklärung gegeben und Verwendung.
Das Obige ist der kritischste Code.
Mit Redis verbinden
spring:data:redis:host: 127.0.0.1 port: 6379
@RestControllerpublic 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());}}</string></string>
Nach dem Login kopieren
Starten Sie Redis lokal und starten Sie dann das lokale SpringBoot-Projekt zum Testen.
@RestControllerpublic 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());}}</string></string>
Lokaler Schnittstellentest: Wiederholte Anforderungen innerhalb von 30 Sekunden müssen abgefangen werden direkt
Der in Redis zwischengespeicherte SCHLÜSSEL lautet wie folgt:
Der entsprechende Code befindet sich am Ende des Artikels. Sie können ihn bei Bedarf kostenlos verwenden!
Schnittstellen-Idempotenz-Lösung
Was denken Sie über diese Antwort?
Verwandte Code-Links, willkommen zu besuchen:
https://www.php.cn/link/94c0915ab3bcbc61c1c61624dd6d7cd5
Das obige ist der detaillierte Inhalt vonHeute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit lokal installierten Schriftdateien auf Webseiten kürzlich habe ich eine kostenlose Schriftart aus dem Internet heruntergeladen und sie erfolgreich in mein System installiert. Jetzt...

Die H5 -Seite muss aufgrund von Faktoren wie Code -Schwachstellen, Browserkompatibilität, Leistungsoptimierung, Sicherheitsaktualisierungen und Verbesserungen der Benutzererfahrung kontinuierlich aufrechterhalten werden. Zu den effektiven Wartungsmethoden gehören das Erstellen eines vollständigen Testsystems, die Verwendung von Versionstools für Versionskontrolle, die regelmäßige Überwachung der Seitenleistung, das Sammeln von Benutzern und die Formulierung von Wartungsplänen.

Die Hauptquellen von H5 -Seitenmaterialien sind: 1. professionelle Material -Website (bezahlt, hoher Qualität, klares Urheberrecht); 2. hausgemachtes Material (hohe Einzigartigkeit, aber zeitaufwändig); 3. Open Source Material Library (kostenlos, muss sorgfältig abgeschrieben werden); 4. Bild-/Video -Website (Urheberrecht verifiziert ist erforderlich). Darüber hinaus sind ein einheitlicher Materialstil, Größenanpassung, Kompressionsverarbeitung und Urheberrechtsschutz wichtige Punkte, die beachtet werden müssen.

Wenn die Anzahl der Elemente nicht festgelegt ist, wählen Sie das erste untergeordnete Element des angegebenen Klassennamens über CSS aus. Bei der Verarbeitung der HTML -Struktur begegnen Sie häufig auf verschiedene Elemente ...

H5 (HTML5) eignet sich für leichte Anwendungen wie Marketingkampagnen, Produktdisplayseiten und Micro-Websites für Unternehmenswerbung. Seine Vorteile liegen in plattformartigen und reichhaltigen Interaktivität, aber seine Einschränkungen liegen in komplexen Interaktionen und Animationen, lokalen Ressourcenzugriff und Offline-Funktionen.

Implementieren Sie den Anzeigeeffekt von schrittweisen Verkürzungen von Text im Webdesign, wie Sie einen speziellen Text -Display -Effekt erzielen, um die Textlänge allmählich zu verkürzen? Dieser Effekt ...

Ein PS, der beim Booten auf "Laden" steckt, kann durch verschiedene Gründe verursacht werden: Deaktivieren Sie korrupte oder widersprüchliche Plugins. Eine beschädigte Konfigurationsdatei löschen oder umbenennen. Schließen Sie unnötige Programme oder aktualisieren Sie den Speicher, um einen unzureichenden Speicher zu vermeiden. Upgrade auf ein Solid-State-Laufwerk, um die Festplatte zu beschleunigen. PS neu installieren, um beschädigte Systemdateien oder ein Installationspaketprobleme zu reparieren. Fehlerinformationen während des Startprozesses der Fehlerprotokollanalyse anzeigen.

PS "Laden" Probleme werden durch Probleme mit Ressourcenzugriff oder Verarbeitungsproblemen verursacht: Die Lesegeschwindigkeit von Festplatten ist langsam oder schlecht: Verwenden Sie Crystaldiskinfo, um die Gesundheit der Festplatte zu überprüfen und die problematische Festplatte zu ersetzen. Unzureichender Speicher: Upgrade-Speicher, um die Anforderungen von PS nach hochauflösenden Bildern und komplexen Schichtverarbeitung zu erfüllen. Grafikkartentreiber sind veraltet oder beschädigt: Aktualisieren Sie die Treiber, um die Kommunikation zwischen PS und der Grafikkarte zu optimieren. Dateipfade sind zu lang oder Dateinamen haben Sonderzeichen: Verwenden Sie kurze Pfade und vermeiden Sie Sonderzeichen. Das eigene Problem von PS: Installieren oder reparieren Sie das PS -Installateur neu.
