Maison > Périphériques technologiques > IA > Aujourd'hui, nous utilisons l'IA pour créer une interface permettant d'éviter la soumission répétée d'annotations.

Aujourd'hui, nous utilisons l'IA pour créer une interface permettant d'éviter la soumission répétée d'annotations.

王林
Libérer: 2023-06-05 13:33:18
avant
1168 Les gens l'ont consulté

Bonjour à tous, je suis incroyable.

Que l'interface soit appelée une ou plusieurs fois, l'idempotence de l'interface garantit que les opérations sur la même ressource ne produiront que le même résultat. Les appels répétés à la même demande d'interface doivent avoir les mêmes résultats qu'une seule demande et ne doivent pas provoquer d'incohérence ou d'effets secondaires.

Aujourd'hui, nous avons utilisé l'intelligence artificielle pour créer une annotation personnalisée afin d'éviter que l'interface ne soit demandée plusieurs fois en 30 secondes, et avons utilisé Redis comme cache.

Question

Sans plus attendre, il suffit de demander :

Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.

# 🎜 🎜#Attendez quelques minutes. . .

1. Créez des annotations personnalisées, y compris la durée de la protection de l'interface, l'activation de la protection contre les soumissions répétées, etc.

Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.

2. Créez ensuite un intercepteur

. Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.

Ici, nous publions le code principal de l'intercepteur :

@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();}
Copier après la connexion
3. Enregistrez l'intercepteur

#🎜 🎜#

Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.

L'explication et l'utilisation donnée à la fin.

Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.


Ce qui précède est le code le plus critique.

Connectez-vous à Redis

Ensuite, nous nous connectons à Redis. La version de configuration la plus simplifiée

spring:data:redis:host: 127.0.0.1 port: 6379
Copier après la connexion

Annotations d'utilisation de l'interface

@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>
Copier après la connexion

Démarrez un Redis localement, puis démarrez le projet SpringBoot local pour les tests,

# 🎜 🎜#

Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.Test de l'interface locale : les requêtes répétées dans les 30 secondes devront être interceptées directement

#🎜 🎜#

La CLÉ mise en cache dans Redis est la suivante : Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.

Le le code correspondant se trouve à la fin de l'article, si nécessaire, vous pouvez avoir des relations sexuelles gratuitement ! Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.

Solution d'idempotence d'interface

Interrogons-nous sur la solution d'idempotence d'interface,

#🎜 🎜##🎜🎜 #

Que pensez-vous de cette réponse ?

Liens de codes associés, bienvenue sur : Aujourdhui, nous utilisons lIA pour créer une interface permettant déviter la soumission répétée dannotations.

https://www.php.cn/link/94c0915ab3bcbc61c1c61624dd6d7cd5

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal