当前位置: 首页 > 知识库问答 >
问题:

将Springfox从2.9.2更新到2.10.4后,出现错误“无法推断基本url。..."

杭曦
2023-03-14

我刚刚将我的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>

由于< code > spring fox . documentation . * 包中的类发生了变化,我不得不将配置类中的注释从

@EnableSwagger2

@EnableSwagger2WebMvc

还谓词进口从谷歌Guav

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 网关后面时很常见。基本 URL 是提供所有 swagger 资源的根。例如,如果api在 http://example.org/api/v2/api-docs 时可用,则基本url http://example.org/api/。请手动输入位置:

不用说,相同的配置(除了上面提到的2个更改)适用于2.9.2

@EnableSwagger2

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

共有2个答案

童花蜂
2023-03-14

可以试试下面。

    <李>添加这种依赖性pom.xml < / l
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-data-rest</artifactId>
  <version>${your.spring.fox.version}</version>
</dependency>
@Import(SpringDataRestConfiguration.class)
郎成龙
2023-03-14

从springfox问题跟踪:

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

我建议恢复回2.9.2贝

 类似资料:
  • 这是什么问题?项目结构:swaggenConfig位于automate.api.web.Auth.keycloak.falconkeycloakconfigurerAdapter中 依赖关系 至于Spring靴 我的一个控制器的示例我的所有控制器都像一样映射 发行 工作得很好,我得到了所有endpoint及其详细信息弹出一个显示“无法推断基本URL......” 求求你,帮帮我!:) 我仔细研究了

  • 这是一个什么样的问题?项目结构:SwaggerConfig在中的身份验证配置在中 依赖关系 至于Spring靴 我的一个控制器的示例我的所有控制器都映射为 问题 工作很好,我会返回所有endpoint及其详细信息弹出显示“无法推断基本URL......” 我的日志看起来像: 不幸的是,我发现在日志的and处的路径映射有些奇怪:GET“/null/swagger-resources/configur

  • 我使用的以及version。但无法启动swagger-ui(即http://localhost:808/swagger-ui.html)或api-docs(即http://localhost:8080/v2/api-docs)网址。 相同的配置适用于。唯一的区别是在中添加了。 错误详细信息 这是我的 这是昂首阔步的配置 控制器接口 控制器实现 Spring启动应用程序 并使用记录springweb

  • 为什么springfox-swagger2 UI告诉我据我所知,我使用的是典型的Swagger spring-boot配置。 正如您在屏幕截图中看到的,支持UI的swagger-fox url是example.com/api。注意:当我导航到:https://localhost:9600/api/v2/api-docs/时,会得到一个标准的Spring。我怀疑这是问题的根源?我没有看到Spring

  • 我们在API网关后面有Spring Boot服务。使用SpringFox-2.1.2的早期版本,我们在加载页面时没有任何问题。这适用于Spring Boot1.4.3.Release。从那时起,我们已经升级到引导1.5.7,并将Springfox升级到2.8.0。 现在,如果我们加载页面,我们会得到一个带有以下长消息的警告框。 null 你知道为什么会这样吗?有人面临类似的问题吗?解决办法的建议?