当前位置:   article > 正文

SpringBoot整合Swagger3+Knife4j美化+携带请求头Token+Nginx代理转发请求配置_springboot3整合swagger3并美化swagger3

springboot3整合swagger3并美化swagger3

目录

依赖

常用注解

配置类和配置文件

Nginx配置

访问路径

效果展示

 一些可能的问题


依赖

  1. <dependency>
  2. <groupId>io.springfox</groupId>
  3. <artifactId>springfox-boot-starter</artifactId>
  4. <version>${io.springfox.version}</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.github.xiaoymin</groupId>
  8. <artifactId>knife4j-spring-boot-starter</artifactId>
  9. <version>${knife4j.version}</version>
  10. </dependency>
  11. <io.springfox.version>3.0.0</io.springfox.version>
  12. <knife4j.version>3.0.3</knife4j.version>

常用注解

@Tag:标识Controller

@Operation:标识方法

@Schema:标识字段

常用三个注解,其他不再赘述,请自行百度。

配置类和配置文件

  1. @EnableOpenApi
  2. @Configuration
  3. @EnableKnife4j
  4. public class Swagger3Config {
  5. //服务名称
  6. @Value("${swagger3.name}")
  7. private String name;
  8. //开关
  9. @Value("${swagger3.enable}")
  10. private Boolean enable;
  11. //版本
  12. @Value("${swagger3.version}")
  13. private String version;
  14. //描述
  15. @Value("${swagger3.description}")
  16. private String description;
  17. //分组
  18. @Value("${swagger3.group}")
  19. private String group;
  20. //扫描路径
  21. @Value("${swagger3.selector}")
  22. private String selector;
  23. @Bean
  24. public Docket docketForCommon(Environment environment) {
  25. // 如果没有配置开关 那么开发测试环境打开、正式环境关闭
  26. if (enable == null){
  27. //设置要显示的swagger环境
  28. Profiles profiles = Profiles.of("dev","test");
  29. //判断当前环境是否为开发测试环境
  30. enable = environment.acceptsProfiles(profiles);
  31. }
  32. return new Docket(DocumentationType.OAS_30)
  33. .apiInfo(apiInfo())//文档基础信息
  34. //整合请求头authorization 原生页面传参时需要手动去掉Bearer
  35. .securitySchemes(Collections.singletonList(HttpAuthenticationScheme.JWT_BEARER_BUILDER
  36. .name("Authorization")//页面展示字段
  37. .build()))
  38. .securityContexts(Collections.singletonList(SecurityContext.builder()
  39. .securityReferences(Collections.singletonList(SecurityReference.builder()
  40. .scopes(new AuthorizationScope[0])
  41. .reference("Authorization")
  42. .build()))
  43. .operationSelector(o -> o.requestMappingPattern().matches("/.*"))// 声明作用域
  44. .build()))
  45. .groupName(group)// 分组信息 多人开发注册多个bean
  46. .enable(enable)// 是否启用
  47. .select()
  48. //.withClassAnnotation(RestController.class)表示扫描类上有@RestController注解的类上接口
  49. //.withMethodAnnotation(GetMappering)扫描GetMappering方法接口
  50. .apis(RequestHandlerSelectors.basePackage(selector))// .basePackage()扫描指定路径下的所有接口 .any() 全扫描 .none() 全不扫描
  51. .paths(PathSelectors.any())//路径过滤
  52. .build();
  53. }
  54. private ApiInfo apiInfo() {
  55. return new ApiInfoBuilder()
  56. .title(name)//标题
  57. .description(description)//描述
  58. .version(version)//版本
  59. .build();
  60. }
  1. # swagger3配置
  2. swagger3:
  3. # 服务名称
  4. name: test
  5. # 是否启动
  6. enable: true
  7. # 项目版本
  8. version: v1.0.0
  9. # 文档描述
  10. description: Test说明文档
  11. # 分组信息
  12. group: common
  13. # 扫描路径
  14. selector: com.test.testController

Nginx配置

其中:

        /v3、/swagger-resources、/swagger-ui、/swagger-ui/index.html为原生Swagger3需要请求的路径/资源。

        /webjars、/favicon.ico/、/doc.html为knief4j美化需要请求的路径/资源。

        proxy_set_header   X-Forwarded-Host  $host;
        proxy_set_header   X-Forwarded-Port  $server_port;

        暴露端口和ip,提供给swagger3进行测试请求。

  1. location ~* ^(/v3|/swagger-resources|/swagger-ui|/swagger-ui/index.html|/webjars/|/favicon.ico/|/doc.html) {
  2. proxy_redirect off;
  3. proxy_set_header X-Real-IP $remote_addr;
  4. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  5. proxy_set_header X-Forwarded-Proto $scheme;
  6. proxy_pass http://yourserver;
  7. proxy_set_header X-Forwarded-Host $host;
  8. proxy_set_header X-Forwarded-Port $server_port;
  9. }
  10. upstream yourserver{
  11. server ip:port;
  12. }

访问路径

效果展示

原生:

 knief4j:

 

 一些可能的问题

项目内如jwt之类的鉴权功能记得放行。

  1. if (requestURI.startsWith("/swagger")||requestURI.startsWith("/v3")||requestURI.startsWith("/webjars")||requestURI.startsWith("/favicon")
  2. ||requestURI.startsWith("/doc")||excludeUrls.contains(requestURI)) {
  3. //Swagger放行
  4. filterChain.doFilter(request, response);
  5. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/891297
推荐阅读
相关标签
  

闽ICP备14008679号