parent
59c6963f7c
commit
ec280224a8
@ -1,35 +0,0 @@
|
||||
package cn.iocoder.yudao.gateway.config;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springdoc.core.GroupedOpenApi;
|
||||
import org.springframework.cloud.gateway.route.RouteDefinition;
|
||||
import org.springframework.cloud.gateway.route.RouteDefinitionLocator;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Configuration
|
||||
public class SpringDocConfiguration {
|
||||
private static final String SERVER_NAME_SUFFIX = "-api";
|
||||
|
||||
@Bean
|
||||
@Lazy(false)
|
||||
public List<GroupedOpenApi> apis(RouteDefinitionLocator locator) {
|
||||
List<GroupedOpenApi> groups = new ArrayList<>();
|
||||
List<RouteDefinition> definitions = locator.getRouteDefinitions().collectList().block();
|
||||
for (RouteDefinition definition : definitions) {
|
||||
log.info("id: " + definition.getId() + " " + definition.getUri().toString());
|
||||
}
|
||||
definitions.stream()
|
||||
.filter(routeDefinition -> routeDefinition.getId().matches(".*"+SERVER_NAME_SUFFIX))
|
||||
.forEach(routeDefinition -> {
|
||||
String name = routeDefinition.getId().replaceAll(SERVER_NAME_SUFFIX, "");
|
||||
GroupedOpenApi.builder().pathsToMatch("/" + name + "/**").group(name).build();
|
||||
});
|
||||
return groups;
|
||||
}
|
||||
}
|
||||
@ -1,54 +1,54 @@
|
||||
//package cn.iocoder.yudao.gateway.swagger;
|
||||
//
|
||||
//
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.http.HttpStatus;
|
||||
//import org.springframework.http.ResponseEntity;
|
||||
//import org.springframework.web.bind.annotation.GetMapping;
|
||||
//import org.springframework.web.bind.annotation.RequestMapping;
|
||||
//import org.springframework.web.bind.annotation.RestController;
|
||||
//import reactor.core.publisher.Mono;
|
||||
//import springfox.documentation.swagger.web.*;
|
||||
//
|
||||
//import javax.annotation.Resource;
|
||||
//import java.util.List;
|
||||
//import java.util.Optional;
|
||||
//
|
||||
///**
|
||||
// * Swagger Controller
|
||||
// *
|
||||
// * @author zxliu
|
||||
// * @date 2022-10-25 11:24
|
||||
// */
|
||||
//@RestController
|
||||
//@RequestMapping("/swagger-resources")
|
||||
//public class SwaggerHandler {
|
||||
//
|
||||
// @Resource
|
||||
// private SwaggerResourcesProvider swaggerResources;
|
||||
//
|
||||
// @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // 只有 @Autowired 可以实现可选注入
|
||||
// @Autowired(required = false)
|
||||
// private SecurityConfiguration securityConfiguration;
|
||||
// @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // 只有 @Autowired 可以实现可选注入
|
||||
// @Autowired(required = false)
|
||||
// private UiConfiguration uiConfiguration;
|
||||
//
|
||||
// @GetMapping("")
|
||||
// public Mono<ResponseEntity<List<SwaggerResource>>> swaggerResources() {
|
||||
// return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
|
||||
// }
|
||||
//
|
||||
// @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));
|
||||
// }
|
||||
//
|
||||
//}
|
||||
package cn.iocoder.yudao.gateway.swagger;
|
||||
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import reactor.core.publisher.Mono;
|
||||
import springfox.documentation.swagger.web.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Swagger Controller
|
||||
*
|
||||
* @author zxliu
|
||||
* @date 2022-10-25 11:24
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/swagger-resources")
|
||||
public class SwaggerHandler {
|
||||
|
||||
@Resource
|
||||
private SwaggerResourcesProvider swaggerResources;
|
||||
|
||||
@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // 只有 @Autowired 可以实现可选注入
|
||||
@Autowired(required = false)
|
||||
private SecurityConfiguration securityConfiguration;
|
||||
@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // 只有 @Autowired 可以实现可选注入
|
||||
@Autowired(required = false)
|
||||
private UiConfiguration uiConfiguration;
|
||||
|
||||
@GetMapping("")
|
||||
public Mono<ResponseEntity<List<SwaggerResource>>> swaggerResources() {
|
||||
return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in new issue