J'ai une API dont je ne veux pas que les gens puissent surveiller la durée de la demande xhr à l'API selon que le compte est valide ou non.
Le problème est que s'ils veulent récolter des identifiants d'utilisateurs, ils peuvent spammer l'API encore et encore et remarquer que les vrais identifiants mettent beaucoup plus de temps à renvoyer une réponse. La réponse est de 200 à chaque fois et la page ne fait rien avec la réponse.
Existe-t-il un moyen simple pour qu'une application Java SpringBoot renvoie immédiatement 200, puis effectue le traitement?
3 Réponses :
Oui, vous pouvez le faire de manière asynchrone. Il vous suffit d'annoter la méthode de votre @Controller
avec @Async
. Cela rendra la méthode exécutée de manière asynchrone, de sorte que la connexion ne sera pas bloquée. Le proxy renvoie Future
, plus d'informations peuvent être trouvées dans docs .
@Async
est le moyen le plus simple.
Ajoutez l'annotation @EnableAsync
dans votre classe principale (c'est-à-dire la classe principale avec l'annotation @SpringBootApplication
)
Ajoutez @Async à votre méthode que vous vouliez exécuter dans un thread séparé.
Certaines limitations de @Async
Alors que @async viendra à votre secours dans une situation comme celle-ci. Cela peut toujours être géré de manière très soignée.
Vive!
Au fait, vous devriez vraiment utiliser 202 Accepted pour ce cas.