Swagger UI:无法推断基本网址

问题描述 投票:0回答:3

我正在使用 Spring Boot 2.1.4.RELEASE 和 springfox-swagger2 2.9.2,并且能够从微服务获取数据(如果直接从浏览器使用 GET 操作访问)

问题:当我在 http://localhost:9000/swagger-ui.html 上点击 Swaager UI 来详细查看 REST API 文档时,出现错误

无法推断基本网址。当使用动态 Servlet 注册或 API 位于 API 网关后面时,这种情况很常见。基本 url 是提供所有 swagger 资源的根。例如如果 api 在 http://example.org/api/v2/api-docs 可用,则基本 URL 为 http://example.org/api/。请手动输入位置:

我的 Swagger 配置如下

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class RestResourceConfig implements WebMvcConfigurer {

  @Override
  public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.defaultContentType(MediaType.APPLICATION_JSON);
  }


  @Bean
  public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors.any())
        .paths(PathSelectors.any())
        .build();
  }
}

注意

我可以使用链接直接访问api文档:http://localhost:9000/v2/api-docs 这没有问题。 Swagger UI 的唯一问题

请推荐修复的提示/解决方案

P.S - 我没有使用 Spring Security

spring spring-boot swagger-ui swagger-2.0 springfox
3个回答
0
投票

我也遇到了和你一样的问题

我的spring-boot版本是2.3.1,swagger版本是2.10.5。这些是我的 swagger 依赖项,第三个帮助我解决了问题。

implementation "io.springfox:springfox-swagger2:2.10.5"
implementation "io.springfox:springfox-swagger-ui:2.10.5"
**implementation "io.springfox:springfox-data-rest:2.10.5"**

0
投票

也许有帮助。我发现Springboot应用程序类需要添加@EnableSwagger2注解。

2.7.0以下使用Swagger比较好

<dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.6.1</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.6.1</version>
    </dependency>

0
投票
  1. 添加 Servlet 初始化器 :-

    public class ServletInitializer extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application.class);
        }
    }
    

  1. extends ServletInitializer
    添加到您的主应用程序中
© www.soinside.com 2019 - 2024. All rights reserved.