Spring mvc 可以大摇大摆地记录在不同端口上运行的多个服务
我已经将swagger与使用Spring boot构建的微服务集成在一起。记录在特定端口上运行的服务的每个操作非常酷。但在这里,我想记录在同一屋檐下不同端口上运行的所有不同服务。所以在一份文件中,我需要所有的服务。有可能大摇大摆吗?或者有没有其他方法来实现这一点。请建议 提前谢谢Spring mvc 可以大摇大摆地记录在不同端口上运行的多个服务,spring-mvc,spring-boot,swagger,swagger-ui,Spring Mvc,Spring Boot,Swagger,Swagger Ui,我已经将swagger与使用Spring boot构建的微服务集成在一起。记录在特定端口上运行的服务的每个操作非常酷。但在这里,我想记录在同一屋檐下不同端口上运行的所有不同服务。所以在一份文件中,我需要所有的服务。有可能大摇大摆吗?或者有没有其他方法来实现这一点。请建议 提前谢谢 @SpringBootApplication @ComponentScan @EnableAutoConfiguration @EnableSwagger2 public class App { publi
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
@EnableSwagger2
public class App
{
public static void main( String[] args )
{
// System.out.println( "Hello World!" );
SpringApplication.run(App.class, args);
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(Predicates.not(RequestHandlerSelectors.basePackage("com.comcast.BulkSolve.Controller")))
.apis(Predicates.not(RequestHandlerSelectors.basePackage("com.comcast.FileProcess.controller")))
//.apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.security")))
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Single swagger")
.description("API to retrieve swagger apis")
.version("2.0.0")
.build();
}
}
=================================
public class GatewaySwaggerResourceProvider implements SwaggerResourcesProvider{
@Autowired
private SwaggerServicesConfig swaggerServiceList;
public GatewaySwaggerResourceProvider() {
}
@Override
public List<SwaggerResource> get() {
// TODO Auto-generated method stub
List<SwaggerResource> resources = new ArrayList<>();
List<SwaggerServices> servList=swaggerServiceList.getServiceList();
for (SwaggerServices swaggerServices : servList) {
resources.add(swaggerResource(swaggerServices.getName(), swaggerServices.getUrl(),swaggerServices.getVersion()));
}
/*swaggerServiceList.getServiceList().forEach(service -> {
resources.add(swaggerResource(service.getName(), service.getUrl(), service.getVersion()));
});*/
return resources;
}
private SwaggerResource swaggerResource(String name, String location, String version) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
@Component
@EnableAutoConfiguration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "documentation.swagger")
public class SwaggerServicesConfig {
List<SwaggerServices> swagger;
public List<SwaggerServices> getServiceList() {
return swagger;
}
public void setServiceList(List<SwaggerServices> swaggerResources) {
this.swagger = swaggerResources;
}
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "documentation.swagger.services")
public static class SwaggerServices {
private String name;
private String url;
private String version;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@Override
public String toString() {
return "SwaggerServices [name=" + name + ", url=" + url + ", version=" + version + "]";
}
}
}
我的结果如下
9003 api文件:
下面是我为
以下是仅获取一个api文档的swagger ui:
不久前,当我试图整合多个微服务时,我遇到了类似的问题。请参考此示例Hi Mike谢谢您提供的信息。我尝试了代码,但得到了不同的端点文档。编辑了我的上一个问题,添加了我使用的代码,并附上了作为输出的swagger api文档。请告诉我我做错了什么。您得到了在不同端口上运行的所有服务的文档。你能详细说明一下你的期望是什么吗@用户3853393屏幕截图中的所有内容都不是我开发的服务。我想获得我自己构建的运行在端口9003和9004上的其中两个服务的文档,但不幸的是,我没有找到这些文档。请在aove Thread中查找application.yml这两个服务是否在本地运行,您是否可以看到v2/api文档中为这两个服务生成的swagger json@User3853393的文档没有包含,而是显示了其他操作文档,没有我在任何服务中实现这些操作的地方(可能是spring实现的),这里是一个工作示例。
server:
port: 9060
documentation:
baseurl: http://localhost
swagger:
services:
-
name: SolveDocumentation
url: http://localhost:9003/v2/api-docs
version: 2.0
-
name: FileprocessDocumentation
url: http://localhost:9004/v2/api-docs
version: 2.0