当前位置:   article > 正文

【日常总结】Swagger 3.0 + 集成 knife4j ,并设置header入参_knife4j设置全局请求头

knife4j设置全局请求头

一、场景

环境:

二、问题

思路 :

三、解决方案 (推荐)

Stage 1:接入knife4j 依赖

Stage 2:修改 yaml 配置

Stage 3:修改 swagger 3 配置文件

Stage 4:查看效果

Swagger UI 3.0

knife4j 3.0

四、其他方案(不推荐) 


上一节: 【日常总结】优雅升级Swagger 2 升至 3.0, 全局设置 content-type application/json-CSDN博客

 

一、场景

  • 公司需要 集成 knife4j 方便调试 带参数说明,请求参数缓存,全局入参如添加header入参

  • 思路 :集成 knife4j ,并开启请求参数缓存

环境:

  • Spring boot : 2.5.4

  • Swagger ui : 3.0

  • JDK : 1.8

二、问题

        集成knife4j 后默认不带header入参,无法添加token参数,需要在每个接口添加如下代码,如

何全局添加参数呢

@RequestHeader(value = "token", required = false) String token

如: 

 

思路 :

        swagger 配置文件中添加全局参数

 

三、解决方案 (推荐

Stage 1:接入knife4j 依赖

  1. <!--knife4j-->
  2. <dependency>
  3. <groupId>com.github.xiaoymin</groupId>
  4. <artifactId>knife4j-spring-boot-starter</artifactId>
  5. <version>3.0.3</version>
  6. </dependency>

 

Stage 2:修改 yaml 配置

  1. knife4j:
  2. # 开启增强配置
  3. enable: true
  4. # 开启生产环境屏蔽
  5. production: false

Stage 3:修改 swagger 3 配置文件

  • 这里是header中添加默认 token
  • 注意:这里的默认值不生效,我也不清楚为什么,有知道的小伙伴可以评论区留言
  1. package com.whxph.xphservice.config;
  2. import io.swagger.annotations.ApiOperation;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import org.springframework.http.HttpMethod;
  9. import springfox.documentation.builders.*;
  10. import springfox.documentation.schema.ScalarType;
  11. import springfox.documentation.service.*;
  12. import springfox.documentation.spi.DocumentationType;
  13. import springfox.documentation.spring.web.plugins.Docket;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. // 自定义swagger3文档信息
  17. @Configuration
  18. @ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true)
  19. @Slf4j
  20. public class Swagger3Config{
  21. @Value(value = "${host:localhost}")
  22. private String host;
  23. @Value("${server.port:8005}")
  24. private String port;
  25. @Bean
  26. public Docket createRestApi() {
  27. return new Docket(DocumentationType.OAS_30)
  28. .apiInfo(apiInfo())
  29. .select()
  30. .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
  31. .paths(PathSelectors.any())
  32. .build()
  33. .globalRequestParameters(getGlobalRequestParameters())
  34. .globalResponses(HttpMethod.GET, getGlobalResonseMessage())
  35. .globalResponses(HttpMethod.POST, getGlobalResonseMessage());
  36. }
  37. private ApiInfo apiInfo() {
  38. log.info("http://{}:{}/swagger-ui.html", host, port);
  39. log.info("http://localhost:{}/swagger-ui.html", port);
  40. log.info("http://localhost:{}/swagger-ui/index.html", port);
  41. log.info("http://localhost:{}/doc.html", port);
  42. return new ApiInfoBuilder()
  43. .title("XPH- iot 接口文档")
  44. .description("更多请咨询")
  45. .contact(new Contact("lijiong", "https://", "xxx@"))
  46. .version("1.0.0")
  47. .build();
  48. }
  49. //生成全局通用参数
  50. private List<RequestParameter> getGlobalRequestParameters() {
  51. List<RequestParameter> parameters = new ArrayList<>();
  52. parameters.add(new RequestParameterBuilder()
  53. .name("token")
  54. .description("认证")
  55. .in(ParameterType.HEADER)
  56. .query(q -> q.model(m -> m.scalarModel(ScalarType.STRING))
  57. .defaultValue("123"))
  58. .required(false)
  59. .build());
  60. return parameters;
  61. }
  62. //生成通用响应信息
  63. private List<Response> getGlobalResonseMessage() {
  64. List<Response> responseList = new ArrayList<>();
  65. responseList.add(new ResponseBuilder().code("404").description("找不到资源").build());
  66. return responseList;
  67. }
  68. }

Stage 4:查看效果

  • Swagger UI 3.0

  • knife4j 3.0

四、其他方案(不推荐) 

网上很多博主使用 knife4j 的  文档管理 > 个性化设置 > 开启请求参数缓存 

 

会带来页面上有多余空格,如果有洁癖的客观,请使用修改 swagger 3 配置文件的解决方案 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号