Swagger 2.0: страница swagger-ui, показывающая информацию об API по умолчанию вместо пользовательской информации API, которую я устанавливаю - PullRequest
0 голосов
/ 06 июня 2019

Я использую docket api для настройки swagger в весеннем проекте MVC.Swagger-UI правильно показывает все пути.Однако пользовательская информация API, такая как заголовок, описание, лицензия и т. Д., Показывает только значения по умолчанию, а не значения, которые я задаю.

Отладка: В методе "apiDocket ()" в классе "SwaggerConfiguration" я проверил значение поля "apiInfo" для объекта "docket" непосредственно перед оператором возврата (используя отражение).Значения правильно устанавливаются.Ясно, что проблема в другом месте, которое я не могу обнаружить.Я использую sprinfox-swagger версии 2.9.2.Я пытался с 2.9.1, 2.8.0, 2.7.0 и 2.6.1 просто чтобы проверить.Я получил те же результаты.Проблема, с которой я столкнулся, была поднята на Swagger не получает настроенную информацию API и всегда показывает значения по умолчанию и Spring boot swagger: пользовательская информация о Api не работает , но у меня естьне получил мое решение.

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

    @Bean
    public Docket apiDocket() {

        ApiInfo apiInfo = getApiInfo();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
        docket.apiInfo(apiInfo);
        return docket;
    }

    private ApiInfo getApiInfo() {

        return new ApiInfo(
                "TITLE",
                "DESCIPRION",
                "VERSION",
                "TERMS OF SERVICE URL",
                new Contact("NAME","URL","EMAIL"),
                "LICENSE",
                "LICENSE URL",
                Collections.emptyList()
        );
    }
}

В XML-файле конфигурации сервлета у меня есть следующее:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd                 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd                 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

    <!-- The controllers are autodetected POJOs labeled with the @Controller 
        annotation. -->
    <context:component-scan base-package="com.sample.package"
        use-default-filters="false">
        <context:include-filter
            expression="org.springframework.stereotype.Controller" type="annotation" />
        <context:include-filter type="annotation"
            expression="org.springframework.web.bind.annotation.ControllerAdvice" />
        <!-- <context:include-filter type="regex" expression=".*SwaggerConfiguration.*"/> -->
    </context:component-scan>

    <context:property-placeholder location="classpath*:META-INF/spring/*.properties"/>

    <!-- Turns on support for mapping requests to Spring MVC @Controller 
        methods Also registers default Formatters and Validators for use across all 
        @Controllers -->
    <mvc:annotation-driven />

    <mvc:default-servlet-handler />

    <mvc:interceptors>
    <bean class="com.sample.package.CustomRequestHandler"/>
    </mvc:interceptors>

    <!-- Enable scanning of spring @Configuration classes -->
    <context:annotation-config />

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    </bean>
    <bean id="swagger2Config"
        class="springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration">
    </bean>
    <mvc:resources order="1" location="/resources/"
    mapping="/resources/**" />
    <mvc:resources mapping="swagger-ui.html"
    location="classpath:/META-INF/resources/" />
    <mvc:resources mapping="/webjars/**"
    location="classpath:/META-INF/resources/webjars/" />
</beans>

В моем pom.xml у меня есть

            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.9.2</version>
            </dependency>

В чванстве -На странице я ожидаю, что заголовок будет «TITLE», описание - «DESCRIPTION», версия - «VERSION», как видно из метода «getApiInfo ()» во фрагменте кода. Однако я получаю заголовок как «Api»Документация ", описание как" Api Documentation ", а версия как" 1.0 ". Все это значения по умолчанию, и значения, которые я устанавливаю в коде, не отражаются на странице swagger-ui. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 01 июля 2019

В XML-файле конфигурации сервлета мне нужно было добавить класс SwaggerConfiguration в качестве компонента.Я добавил следующую строку:

<bean class="com.sample.package.SwaggerConfiguration"/>

И это сработало.

...