我已经设置了一个spring-boot应用程序,我希望Swagger UI能够显示在一个页面上聚合的所有文档。
对于后台,该应用程序是容器化的,并在具有由k8s编排的多个部署的群集中运行。有一个入口服务,它根据传入的HTTP请求的结构路由到正确的部署。
每个模块中都有多个控制器,配置有Springfox。
@Configuration
@EnableSwagger2
public class Swagger
{
@Bean
public Docket api()
{
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
上面只给我一个默认的swagger UI页面,其中包含每个端点的文档。如何提供集中招摇-ui?
为了解决这个问题,我使用kubernetes服务发现来注册我的客户,更多关于k8s客户端发现的信息:https://cloud.spring.io/spring-cloud-static/spring-cloud-kubernetes/2.1.0.RC1/multi/multi__discoveryclient_for_kubernetes.html
我还创建了一个带有zuul代理的网关服务API,用于查询swagger规范,有关zuul的更多信息在spring boot:https://cloud.spring.io/spring-cloud-netflix/multi/multi__router_and_filter_zuul.html
最后,我已经配置了我的入口服务,将所有的swagger请求重定向到网关API,后者使用zuul来获取swagger规范。