Документирование пользовательских контроллеров

Подскажите пожалуйста, как документировать пользовательские контроллеры? И есть ли вообще такая возможность?

Добрый день!
Можно попробовать подключить SpringFox. Вроде бы всё должно быть “стандартно” с этим. В интернете много материалов на эту тему, например у Baeldung.

Спасибо за ответ, по ссылке попробовал - не работает, при попытке открыть страницу получаю ошибки Could not navigate to ‘v2/api-docs’ или Could not navigate to ‘swagger-ui’

Похоже, что SpringFox ещё не поддерживает Spring Boot 3. Есть альтернативная библиотека SpringDoc.

Добавьте зависимость в build.gradle:

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'

Если хотите использовать встроенный SwaggerUI, а не только генерировать openapi json, то нужно добавить следующее в application.properties. Иначе сервлет ваадина будет перехватывать запросы к swagger-ui:

vaadin.excludeUrls=/swagger-ui/**

Зарегистрируйте бин security filter chain, иначе запросы будут обрабатываться секьюрити от FlowUI конфигурации:

import io.jmix.core.JmixSecurityFilterChainOrder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
public class SpringDocConfig {

    /**
     * SecurityFilterChain that serves springdoc URLs must have an order less than FlowUI filter chain
     */
    @Bean
    @Order(JmixSecurityFilterChainOrder.FLOWUI - 10)
    public SecurityFilterChain springDocsecurityFilterChain(HttpSecurity http) throws Exception {
        http.securityMatcher("/swagger-ui/**", "/v3/api-docs/**")
                .authorizeHttpRequests(auth -> auth.anyRequest().permitAll());
        return http.build();
    }
}

SwaggerUI доступен по ссылке http://localhost:8080/swagger-ui/index.html

OpenAPI JSON: http://localhost:8080/v3/api-docs

Демо-проект: springdoc-sample.zip (174.9 КБ)

1 симпатия

большое спасибо, попробую, можно кстати добавить это в документацию, а то там совсем скромно описано

Здравствуйте, попробовал ваш способ, заработал, но если в проекте добавить зависимость implementation ‘io.jmix.rest:jmix-rest-starter’ то ссылка /swagger-ui/index.html ничего не показывает, выходит окно с ошибкой. Можно ли это как то обойти?

Снимок экрана 2023-10-21 в 23.45.53

Похоже, что проблема в конфликте зависимостей на библиотеки swagger. Я завёл тикет.

Пока что можете попробовать исключить зависимости, которые тащит модуль REST:

    implementation ('io.jmix.rest:jmix-rest-starter') {
        exclude(group: "io.swagger.core.v3", module: "swagger-core")
        exclude(group: "io.swagger.core.v3", module: "swagger-models")
    }
1 симпатия