先在项目中加入Swagger2文档:https://blog.csdn.net/Anenan/article/details/84315242
网关服务的部署:https://blog.csdn.net/Anenan/article/details/90018948
在网关服务中引入
<!--swagger2--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency>
加入Swagger2配置
/** * Swagger2配置 * * @author 向振华 * @date 2019-05-13 14:42 */ @Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()); } /** * 构建 api文档的详细信息函数 * * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API") .contact(new Contact("向振华", "", "")) .version("1.0.0") .build(); } }
将各服务的api加入到网关服务
/** * @author 向振华 * @date 2019/05/13 15:01 */ @Primary @Component public class DocumentationConfig implements SwaggerResourcesProvider { @Override public List<SwaggerResource> get() { List resources = new ArrayList<>(); resources.add(swaggerResource("前台系统", "/front/v2/api-docs", "2.0")); resources.add(swaggerResource("首页系统", "/mainhome/v2/api-docs", "2.0")); 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; } }
这里也可以选择批量加入api
/** * @author 向振华 * @date 2019/05/13 15:01 */ @Primary @Component public class DocumentationConfig implements SwaggerResourcesProvider{ private final RouteLocator routeLocator; public DocumentationConfig(RouteLocator routeLocator) { this.routeLocator = routeLocator; } @Override public List<SwaggerResource> get() { List<SwaggerResource> resources = new ArrayList<>(); List<Route> routes = routeLocator.getRoutes(); routes.forEach(route -> resources.add(swaggerResource(route.getId(), route.getFullPath().replace("/**", "/v2/api-docs"),"2.0"))); 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; } }
/** * @author 向振华 * @date 2019/05/13 16:17 */ @Configuration public class ZuulConfig { //自定义 serviceId 和路由之间的相互映射 @Bean public PatternServiceRouteMapper serviceRouteMapper() { return new PatternServiceRouteMapper( "(?<project>^.+)-(?<subProject>.+$)", "${project}/${subProject}"); } }