Heim >Technologie-Peripheriegeräte >KI >Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.

王林
王林nach vorne
2023-06-05 13:33:181193Durchsuche

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:

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.

Warten Sie ein paar Minuten. . .

1. Erstellen Sie benutzerdefinierte Anmerkungen, einschließlich der Dauer des Schnittstellenschutzes, der Aktivierung des Schutzes vor wiederholten Übermittlungen usw.

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.

2. Dann erstellen Sie den Interceptor

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.

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.

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.Das Obige ist der kritischste Code.

Mit Redis verbinden

Jetzt verbinden wir uns mit Redis. Die optimierteste Konfigurationsversion

spring:data:redis:host: 127.0.0.1 port: 6379
Anmerkungen zur Schnittstellennutzung

@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>

Starten Sie Redis lokal und starten Sie dann das lokale SpringBoot-Projekt zum Testen.

Lokaler Schnittstellentest: Wiederholte Anforderungen innerhalb von 30 Sekunden müssen abgefangen werden direkt

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.

Der in Redis zwischengespeicherte SCHLÜSSEL lautet wie folgt:

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.

Der entsprechende Code befindet sich am Ende des Artikels. Sie können ihn bei Bedarf kostenlos verwenden!

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.Schnittstellen-Idempotenz-Lösung

Lassen Sie uns nach der Schnittstellen-Idempotenz-Lösung fragen:

Was denken Sie über diese Antwort?

Heute verwenden wir KI, um eine Schnittstelle zu erstellen, die das wiederholte Einreichen von Anmerkungen verhindert.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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen