转载请表明出处 https://blog.csdn.net/Amor_Leo/article/details/102853186 谢谢
Spring Cloud gateway 与Swagger 整合
gateway pomswagger版本gateway版本
gateway网关服务配置类yml
其他服务pom启动类yml
页面
gateway pom
swagger版本
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
gateway版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/>
</parent>
<properties>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
gateway网关服务
配置类
@Component
@Primary
@AllArgsConstructor
public class SwaggerProvider implements SwaggerResourcesProvider {
public static final String API_URI
= "/v2/api-docs";
private final RouteLocator routeLocator
;
private final GatewayProperties gatewayProperties
;
@Override
public List
<SwaggerResource> get() {
List
<SwaggerResource> resources
= new ArrayList<>();
List
<String> routes
= new ArrayList<>();
routeLocator
.getRoutes().subscribe(route
-> routes
.add(route
.getId()));
gatewayProperties
.getRoutes().stream().filter(routeDefinition
-> routes
.contains(routeDefinition
.getId()))
.forEach(routeDefinition
-> routeDefinition
.getPredicates().stream()
.filter(predicateDefinition
-> ("Path").equalsIgnoreCase(predicateDefinition
.getName()))
.forEach(predicateDefinition
-> resources
.add(swaggerResource(routeDefinition
.getId(),
predicateDefinition
.getArgs().get(NameUtils
.GENERATED_NAME_PREFIX
+ "0")
.replace("/**", API_URI
)))));
return resources
;
}
private SwaggerResource
swaggerResource(String name
, String location
) {
SwaggerResource swaggerResource
= new SwaggerResource();
swaggerResource
.setName(name
);
swaggerResource
.setLocation(location
);
swaggerResource
.setSwaggerVersion("2.0");
return swaggerResource
;
}
}
@RestController
@RequestMapping("/swagger-resources")
public class SwaggerHandler {
@Autowired(required
= false)
private SecurityConfiguration securityConfiguration
;
@Autowired(required
= false)
private UiConfiguration uiConfiguration
;
private final SwaggerResourcesProvider swaggerResources
;
@Autowired
public SwaggerHandler(SwaggerResourcesProvider swaggerResources
) {
this.swaggerResources
= swaggerResources
;
}
@GetMapping("/configuration/security")
public Mono
<ResponseEntity
<SecurityConfiguration>> securityConfiguration() {
return Mono
.just(new ResponseEntity<>(
Optional
.ofNullable(securityConfiguration
).orElse(SecurityConfigurationBuilder
.builder().build()), HttpStatus
.OK
));
}
@GetMapping("/configuration/ui")
public Mono
<ResponseEntity
<UiConfiguration>> uiConfiguration() {
return Mono
.just(new ResponseEntity<>(
Optional
.ofNullable(uiConfiguration
).orElse(UiConfigurationBuilder
.builder().build()), HttpStatus
.OK
));
}
@GetMapping("")
public Mono
<ResponseEntity> swaggerResources() {
return Mono
.just((new ResponseEntity<>(swaggerResources
.get(), HttpStatus
.OK
)));
}
}
yml
spring:
main:
allow-bean-definition-overriding: true
application:
name: sophia
-gateway
cloud:
gateway:
locator:
enabled: true
routes:
- id: sophia
-auth
uri: lb
://sophia
-auth
predicates:
- Path=/auth/**
filters:
- StripPrefix=1
- id: sophia
-admin
uri: lb
://sophia
-admin
predicates:
- Path=/admin/**
filters:
- StripPrefix=1
其他服务
pom
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
启动类
@EnableSwagger2Doc
yml
swagger:
base-package: com.scaffolding.sophia.admin.biz
enabled: true
description: sophia用户服务
version: V2.0
license: Apache License
, Version 2.0
license-url: https
://www.apache.org/licenses/LICENSE
-2.0.html
页面
如果你整合了oauth2