web-dev-qa-db-fra.com

Comment obtenir la liste de tous les points de terminaison après le démarrage, Spring Boot

J'ai un service de repos écrit avec Spring Boot. Je veux obtenir tous les points finaux après le démarrage. Comment puis-je y parvenir? À cet effet, je souhaite enregistrer tous les points de terminaison sur une base de données après le démarrage (s'ils n'existent pas déjà) et les utiliser pour l'autorisation. Ces entrées seront injectées dans les rôles et les rôles seront utilisés pour créer des jetons.

21
barbakini

Vous pouvez obtenir RequestMappingHandlerMapping au début du contexte d'application.

public class EndpointsListener implements ApplicationListener {

    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        if (event instanceof ContextRefreshedEvent) {
            ApplicationContext applicationContext = ((ContextRefreshedEvent) event).getApplicationContext();
            applicationContext.getBean(RequestMappingHandlerMapping.class).getHandlerMethods().forEach(/*Write your code here */);
        }
    }
}

Alternativement, vous pouvez également un actionneur Spring Boot (vous pouvez également utiliser un actionneur même si vous n'utilisez pas Spring Boot) qui expose un autre point de terminaison (mappings endpoint) qui répertorie tous les points de terminaison dans json. Vous pouvez atteindre ce point de terminaison et analyser le json pour obtenir la liste des points de terminaison.

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html#production-ready-endpoints

22
Praneeth Ramesh