| | |
| | | private SwaggerProperties swaggerProperties; |
| | | |
| | | @Autowired |
| | | private TokenProperties tokenProperties; |
| | | private TokenProperties tokenProperties; |
| | | |
| | | @Autowired |
| | | private OpenApiExtensionResolver openApiExtensionResolver; |
| | |
| | | */ |
| | | @PostConstruct |
| | | public void createRestApi() { |
| | | for (SwaggerProperties.Groups group : swaggerProperties.getGroups()) { |
| | | String basePackage = group.getBasePackage(); |
| | | Docket docket = new Docket(DocumentationType.OAS_30) |
| | | .enable(swaggerProperties.getEnabled()) |
| | | // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息) |
| | | .apiInfo(apiInfo()) |
| | | // 设置哪些接口暴露给Swagger展示 |
| | | .select() |
| | | // 扫描所有有注解的api,用这种方式更灵活 |
| | | //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) |
| | | // 扫描指定包中的swagger注解 |
| | | .apis(RequestHandlerSelectors.basePackage(basePackage)) |
| | | // 扫描所有 .apis(RequestHandlerSelectors.any()) |
| | | .paths(PathSelectors.any()) |
| | | .build() |
| | | .groupName(group.getName()) |
| | | // 设置安全模式,swagger可以设置访问token |
| | | .securitySchemes(securitySchemes()) |
| | | .securityContexts(securityContexts()) |
| | | .extensions(openApiExtensionResolver.buildExtensions(group.getName())) |
| | | .pathMapping(swaggerProperties.getPathMapping()); |
| | | String beanName = StringUtils.substringAfterLast(basePackage, ".") + "Docket"; |
| | | SpringUtils.registerBean(beanName, docket); |
| | | } |
| | | for (SwaggerProperties.Groups group : swaggerProperties.getGroups()) { |
| | | String basePackage = group.getBasePackage(); |
| | | Docket docket = new Docket(DocumentationType.OAS_30) |
| | | .enable(swaggerProperties.getEnabled()) |
| | | // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息) |
| | | .apiInfo(apiInfo()) |
| | | // 设置哪些接口暴露给Swagger展示 |
| | | .select() |
| | | // 扫描所有有注解的api,用这种方式更灵活 |
| | | //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) |
| | | // 扫描指定包中的swagger注解 |
| | | .apis(RequestHandlerSelectors.basePackage(basePackage)) |
| | | // 扫描所有 .apis(RequestHandlerSelectors.any()) |
| | | .paths(PathSelectors.any()) |
| | | .build() |
| | | .groupName(group.getName()) |
| | | // 设置安全模式,swagger可以设置访问token |
| | | .securitySchemes(securitySchemes()) |
| | | .securityContexts(securityContexts()) |
| | | .extensions(openApiExtensionResolver.buildExtensions(group.getName())) |
| | | .pathMapping(swaggerProperties.getPathMapping()); |
| | | String beanName = StringUtils.substringAfterLast(basePackage, ".") + "Docket"; |
| | | SpringUtils.registerBean(beanName, docket); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | private List<SecurityScheme> securitySchemes() { |
| | | List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>(); |
| | | String header = tokenProperties.getHeader(); |
| | | apiKeyList.add(new ApiKey(header, header, In.HEADER.toValue())); |
| | | String header = tokenProperties.getHeader(); |
| | | apiKeyList.add(new ApiKey(header, header, In.HEADER.toValue())); |
| | | return apiKeyList; |
| | | } |
| | | |
| | |
| | | private List<SecurityContext> securityContexts() { |
| | | List<SecurityContext> securityContexts = new ArrayList<>(); |
| | | securityContexts.add( |
| | | SecurityContext.builder() |
| | | .securityReferences(defaultAuth()) |
| | | .operationSelector(o -> o.requestMappingPattern().matches("/.*")) |
| | | .build()); |
| | | SecurityContext.builder() |
| | | .securityReferences(defaultAuth()) |
| | | .operationSelector(o -> o.requestMappingPattern().matches("/.*")) |
| | | .build()); |
| | | return securityContexts; |
| | | } |
| | | |
| | |
| | | // 用ApiInfoBuilder进行定制 |
| | | SwaggerProperties.Contact contact = swaggerProperties.getContact(); |
| | | return new ApiInfoBuilder() |
| | | // 设置标题 |
| | | .title(swaggerProperties.getTitle()) |
| | | // 描述 |
| | | .description(swaggerProperties.getDescription()) |
| | | // 作者信息 |
| | | .contact(new Contact(contact.getName(), contact.getUrl(), contact.getEmail())) |
| | | // 版本 |
| | | .version(swaggerProperties.getVersion()) |
| | | .build(); |
| | | // 设置标题 |
| | | .title(swaggerProperties.getTitle()) |
| | | // 描述 |
| | | .description(swaggerProperties.getDescription()) |
| | | // 作者信息 |
| | | .contact(new Contact(contact.getName(), contact.getUrl(), contact.getEmail())) |
| | | // 版本 |
| | | .version(swaggerProperties.getVersion()) |
| | | .build(); |
| | | } |
| | | } |