1. Обзор
При работе с API REST обычно извлекаются все конечные точки REST. Например, нам может потребоваться сохранить все конечные точки сопоставления запросов в базе данных. В этом руководстве мы рассмотрим, как получить все остальные конечные точки в приложении Spring Boot.
2. Отображение Конечных Точек
В приложении Spring Boot мы предоставляем конечную точку REST API с помощью аннотации @RequestMapping в классе контроллера. Для получения этих конечных точек существует три варианта: прослушиватель событий, привод пружинной загрузки или библиотека Swagger.
3. Подход к Прослушиванию Событий
Для создания службы REST API мы используем @RestController и @RequestMapping в классе контроллера. Эти классы регистрируются в контексте приложения spring как компонент spring. Таким образом, мы можем получить конечные точки с помощью прослушивателя событий, когда контекст приложения готов при запуске. Существует два способа определения слушателя. Мы можем либо реализовать интерфейс ApplicationListener , либо использовать аннотацию @EventListener .
3.1. Интерфейс ApplicationListener
При реализации ApplicationListener мы должны определить метод onApplicationEvent() :
@Override public void onApplicationEvent(ContextRefreshedEvent event) { ApplicationContext applicationContext = event.getApplicationContext(); RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext .getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class); Mapmap = requestMappingHandlerMapping .getHandlerMethods(); map.forEach((key, value) -> LOGGER.info("{} {}", key, value)); }
Таким образом, мы используем класс ContextRefreshedEvent . Это событие публикуется, когда ApplicationContext инициализируется или обновляется. Spring Boot предоставляет множество реализаций HandlerMapping . Среди них класс RequestMappingHandlerMapping , который обнаруживает сопоставления запросов и используется аннотацией @RequestMapping . Поэтому мы используем этот компонент в событии ContextRefreshedEvent .
3.2. Аннотация @EventListener
Другой способ сопоставить наши конечные точки-использовать аннотацию @EventListener . Мы используем эту аннотацию непосредственно в методе, который обрабатывает ContextRefreshedEvent :
@EventListener public void handleContextRefresh(ContextRefreshedEvent event) { ApplicationContext applicationContext = event.getApplicationContext(); RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext .getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class); Mapmap = requestMappingHandlerMapping .getHandlerMethods(); map.forEach((key, value) -> LOGGER.info("{} {}", key, value)); }
4. Подход к приводу
Второй подход для получения списка всех наших конечных точек – это функция привода пружинного загрузчика.
4.1. Зависимость Maven
Для включения этой функции мы добавим зависимость spring-boot-actuator Maven в ваш pom.xml файл:
org.springframework.boot spring-boot-starter-actuator
4.2. Конфигурация
Когда мы добавляем зависимость spring-boot-actuator , по умолчанию доступны только /health и /info конечные точки. Чтобы включить все конечные точки привода , мы можем предоставить им доступ, добавив свойство в наш файл application.properties :
management.endpoints.web.exposure.include=*
Или мы можем просто предоставить конечную точку для получения сопоставлений :
management.endpoints.web.exposure.include=mappings
После включения конечные точки REST API нашего приложения доступны по адресу http://host/actuator/mappings .
5. Чванство
Библиотека Swagger также может использоваться для перечисления всех конечных точек API REST.
5.1. Зависимость Maven
Чтобы добавить его в наш проект, нам нужна зависимость springfox-boot-starter в pom.xml файл:
io.springfox springfox-boot-starter 3.0.0
5.2. Конфигурация
Давайте создадим класс конфигурации, определив компонент Docket:
@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); }
Docket – это класс конструктора, который настраивает генерацию документации Swagger. Чтобы получить доступ к конечным точкам REST API, мы можем посетить этот URL-адрес в вашем браузере:
http://host/v2/api-docs
6. Заключение
В этой статье мы опишем, как получить конечные точки сопоставления запросов в приложении Spring Boot с помощью прослушивателя событий, привода Spring Boot и библиотеки Swagger.
Как обычно, все примеры кода, используемые в этом руководстве, доступны на GitHub.