Rumah >Peranti teknologi >AI >Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

王林
王林ke hadapan
2023-06-05 13:33:181193semak imbas

Helo, semua, saya hebat.

Tidak kira berapa kali antara muka dipanggil sekali atau beberapa kali, penyahdayaan antara muka memastikan bahawa operasi pada sumber yang sama hanya akan menghasilkan hasil yang sama. Panggilan berulang kepada permintaan antara muka yang sama beberapa kali harus mempunyai hasil yang sama seperti permintaan tunggal dan tidak boleh menyebabkan ketidakkonsistenan atau kesan sampingan.

Hari ini kami menggunakan kecerdasan buatan untuk mencipta anotasi tersuai untuk menghalang antara muka daripada diminta beberapa kali dalam masa 30 saat dan menggunakan Redis sebagai cache.

Soalan

Jangan banyak cakap, tanya terus:

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

Setelah menunggu beberapa minit . . .

1 Buat anotasi tersuai, termasuk tempoh perlindungan antara muka, menghidupkan perlindungan terhadap penyerahan berulang, dsb.

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

2 Kemudian buat pemintas

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

Di sini kita Siarkan kod teras pemintas:

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

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

Penjelasan dan kaedah penggunaan yang diberikan pada penghujung. .

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.


Kod di atas ialah kod yang paling kritikal.

Sambung ke Redis

Seterusnya kita sambung ke Redis. Versi konfigurasi yang paling diperkemas

spring:data:redis:host: 127.0.0.1 port: 6379

Anotasi penggunaan antara muka

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

Mulakan Redis secara setempat, dan kemudian mulakan projek SpringBoot tempatan untuk ujian,

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

Ujian antara muka tempatan: Permintaan berulang dalam masa 30 saat perlu dipintas terus

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

KEY yang dicache dalam Redis ialah seperti berikut:

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

Kod yang berkaitan ada di penghujung artikel, anda boleh menggunakannya secara percuma jika anda memerlukannya!

Penyelesaian mati pucuk antara muka

Mari kita tanya tentang penyelesaian mati pucuk antara muka,

Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.

Tentang Apa pendapat anda jawapan ini?

Pautan kod berkaitan, dialu-alukan untuk melawat:

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

Atas ialah kandungan terperinci Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam