博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cloud Gateway 微服务系统使用swagger-bootstrap-ui生成接口文档
阅读量:2385 次
发布时间:2019-05-10

本文共 5172 字,大约阅读时间需要 17 分钟。

1、先展示下效果

  

2、实现过程

   1> 引入依赖:

    

2.0.5
2.9.2
com.github.xiaoymin
knife4j-spring-boot-starter
${knife4j.version}
io.springfox
springfox-swagger2
${swagger.version}
io.springfox
springfox-bean-validators
${swagger.version}

 2> 公共模块书写配置文件

     

@Configuration@EnableSwagger2@EnableKnife4j@Import(BeanValidatorPluginsConfiguration.class)public class SwaggerConfig {    @Bean(value = "XXXApi")    @Order(value = 1)    public Docket groupRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                .paths(PathSelectors.any())                .build()                .securityContexts(Lists.newArrayList(securityContext()))                .securitySchemes(Lists.
newArrayList(apiKey())); } private ApiInfo apiInfo() { return new ApiInfoBuilder().title("XXXXX接口文档").description("") .contact(new Contact("Minco", "", "")).version("1.0-FAST").build(); } private ApiKey apiKey() { return new ApiKey("TOKEN", "token", "header"); } private SecurityContext securityContext() { return SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.regex("/.*")).build(); } List
defaultAuth() { AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; return Lists.newArrayList(new SecurityReference("BearerToken", authorizationScopes)); }}

3> gateway模块

@Component@Primary@AllArgsConstructorpublic class SwaggerProvider implements SwaggerResourcesProvider {    public static final String API_URI = "/v2/api-docs";    private final RouteLocator routeLocator;    private final GatewayProperties gatewayProperties;    @Override    public List
get() { List
resources = new ArrayList<>(); List
routes = new ArrayList<>(); // 取出gateway的route routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); // 结合配置的route-路径(Path),和route过滤,只获取有效的route节点 // 打开下面注释可以自动扫描接入gateway的服务,为了演示,只扫描system 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
> securityConfiguration() { return Mono.just(new ResponseEntity<>( Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), HttpStatus.OK)); } @GetMapping("/configuration/ui") public Mono
> uiConfiguration() { return Mono.just(new ResponseEntity<>( Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); } @SuppressWarnings("rawtypes") @GetMapping("") public Mono
swaggerResources() { return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); }}
@RestController@Api(tags = "扫呗测试")public class TestCtrl  extends BaseController {    @GetMapping("test")    @ApiOperation(value = "测试接收消息", notes = "")    public R loginSilde( String msg) {      return R.ok("接收消息:"+msg);    }}

 

转载地址:http://xjnab.baihongyu.com/

你可能感兴趣的文章
博客搬家
查看>>
冒号课堂§6.2:平台语言
查看>>
《关于信息系统组织方式的一个提案》的评论与反评
查看>>
冒号和他的学生们(连载10)——超级范式
查看>>
冒号和他的学生们(连载9)——泛型范式
查看>>
冒号和他的学生们(连载13)——范式总结
查看>>
A Proposal on Organization of Information System
查看>>
冒号和他的学生们(连载2)——首轮提问
查看>>
正则表达式与文件格式化处理
查看>>
Java EE互联网轻量级框架整合开发
查看>>
Java语言程序设计(基础篇)
查看>>
大型网站技术架构:核心原理与案例分析
查看>>
JAVA并发编程实战
查看>>
RabbitMQ实战++高效部署分布式消息队列
查看>>
微服务设计
查看>>
Spring Cloud微服务实战
查看>>
C++ static 语义
查看>>
C++ static 语义
查看>>
Linux Cgroups概述
查看>>
centos7 硬盘性能测试
查看>>