将 Springfox 从 2.9.2 更新到 2.10.4 后错误"Unable to infer base url. ..."



我刚刚将 Spring Boot 应用程序(版本 2.3.1.RELEASE(中的 Springfox 依赖项从 2.9.2 更新到 2.10.4。

<spring-boot.version>2.3.1.RELEASE</spring-boot.version>
<swagger.version>2.10.4</swagger.version>

由于springfox.documentation.*包中的类更改,我不得不将配置类中的注释从

@EnableSwagger2

@EnableSwagger2WebMvc

此外,谓词导入从Google Guave更改为java.util.function。我当前的配置类如下所示

package de.rewe.zlip.config;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).globalOperationParameters(globalOperationParameters())
.select()
.apis(sourceScannedForRestApis())
.paths(PathSelectors.any())
.build()
.apiInfo(apiEndPointsInfo())
.genericModelSubstitutes(Optional.class);
}
private List<Parameter> globalOperationParameters() {
List<Parameter> operationParameters = new LinkedList<>();
Parameter authorizationParameter = new ParameterBuilder().name("Authorization")
.description("Your Bearer token ")
.modelRef(new ModelRef("string"))
.parameterType("header")
.build();
operationParameters.add(authorizationParameter);
return operationParameters;
}
private Predicate<RequestHandler> sourceScannedForRestApis() {
return RequestHandlerSelectors.basePackage("de.my.package");
}
private ApiInfo apiEndPointsInfo() {
return new ApiInfoBuilder().title("TEST SERVER REST API")
.description("REST API provided for the TEST web application")
.contact(contactInfo())
.version("v1.0")
.build();
}
private Contact contactInfo() {
return new Contact("Test Team", "https://", "test@test.com");
}
}

当我现在打开 http://localhost:8080/swagger-ui.html 时,我收到以下消息:

无法推断基本网址。这在使用动态 servlet 时很常见 注册或当 API 位于 API 网关后面时。基本网址是 提供所有招摇资源的根。例如,如果 该 API 可在 http://example.org/api/v2/api-docs 然后 基本网址 http://example.org/api/。请输入位置 手动地:

不用说,相同的配置(除了上面提到的 2 个更改(适用于 2.9.2。前面问题中的大多数提示都在添加

@EnableSwagger2

但由于此注释已在 2.10.X 中更改为@EnableSwagger2Mvc@EnableSwagger2Flux这无济于事。

来自 springfox 问题跟踪器:

哦,请不要使用2.10...这是一个中间步骤,以便使用3.0.0-SNAPSHOT的人可以在需要时继续使用已发布的版本。

我建议暂时恢复到 2.9.2。

您可以在下面尝试。

  1. 将此依赖项添加到您的 pom 中.xml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>${your.spring.fox.version}</version>
</dependency>
  1. 将此行添加到主类或 swagger 配置类中
@Import(SpringDataRestConfiguration.class)

相关内容

最新更新