Maison  >  Article  >  Périphériques technologiques  >  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.

王林
王林avant
2023-06-05 13:33:181106parcourir

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

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>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer