Adakah terdapat cara untuk menggunakan had kadar pada laluan, tetapi hanya pada respons yang berjaya. Contohnya, jika pengguna menghantar permintaan ke titik akhir send/code
5 kali, jika semuanya berjaya, pengguna dihalang daripada menghantar permintaan itu semula. Walau bagaimanapun, jika 2 daripadanya gagal (seperti ralat pengesahan atau isu lain), tetapi 3 berjaya, pengguna harus mencuba 2 kali lagi dalam masa yang diberikan.
Saya tahu tentang melakukan semakan had kadar sebelum melaksanakan permintaan dan kemudian menyekat atau membiarkan pengguna meneruskan. Tetapi adakah terdapat cara untuk menggunakan logik saya atau perlukah saya mencuba pendekatan yang berbeza?
Ini adalah kod sumber
}
Andaikan URL saya ialah Example.com/test_Rate_Limit_only_success.
Dalam contoh ini, apabila pengguna menghantar permintaan kepada sistem, aplikasi masih mengesahkan permintaan (jika ralat berlaku, pengguna akan menghantar permintaan tanpa had). Dengan data yang sah, bahagian mengehadkan kelajuan akan mula berfungsi.
Anda mungkin perlu membuat perisian tengah anda sendiri, tetapi anda boleh melanjutkan kelas
ThrottleRequests
dan menyesuaikan cara anda mahu mengendalikan respons:Kemudian tambah perisian tengah anda ke
Kernel.php
:Kemudian gunakannya dalam laluan seperti perisian pertengahan pendikit asal:
Nota: Jika anda mahu balik dari
RateLimiter::for
构建的自定义响应,您可能必须重写handleRequestUsingNamedLimiter
, saya tidak melakukan apa-apa untuk itu di sini.