我正在使用 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-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"**
也许有帮助。我发现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>
添加 Servlet 初始化器 :-
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
或
extends ServletInitializer
添加到您的主应用程序中