Spring Boot进阶(17):Swagger2高级配置:定制header请求头等参数

时间:2024-10-12 19:48:07

1. 前言????

        Swagger2是一种功能强大的API文档工具,它可以帮助我们快速生成API文档,并且提供一些调试工具来方便我们调试接口。但是在实际开发中,有些接口需要在请求头中携带一些特定参数才能正常调用,,比如你的登录,如果是用token认证,这时候我们就需要在Swagger2中配置header请求头等参数了。本篇文章将介绍如何在Swagger2中配置header请求头等参数,让你的API接口更加易用、清晰、规范。快来了解吧!

         这将又会是干货满满的一期,全程无尿点不废话只抓重点教,具有非常好的学习效果,拿好小板凳准备就坐!希望学习的过程中大家认真听好好学,学习的途中有任何不清楚或疑问的地方皆可评论区留言或私信,bug菌将第一时间给予解惑,那么废话不多说,直接开整!Fighting!!

2. 环境说明????

本地的开发环境:

  • 开发工具:IDEA 2021.3
  • JDK版本: JDK 1.8
  • Spring Boot版本:2.3.1 RELEASE
  • Maven版本:3.8.2

3. 实现方案????

        集成过swagger 的小伙伴,肯定都会在自己的项目中配置一下,缺它,你的swagger也运行不了,对吧。

        那么跟swagger添加自定义请求头有啥联系?别着急,继续往下看。

        我们都知道,body参数是自带的,要如果要添加header参数呢?那就要你手动添加啦,你只需要在注入该globalOperationParameters(),这是一个全局参数配置,你只需要将你设置的header 参数名设置进去即可。

        我们先来看下 globalOperationParameters() 方法加在哪里。

  1. /**
  2. * swagger文档配置
  3. */
  4. @Bean
  5. public Docket customDocket() {
  6. return new Docket(DocumentationType.SWAGGER_2)
  7. .apiInfo(apiInfo())
  8. .select()
  9. .apis((""))
  10. .paths(())
  11. .build()
  12. .globalOperationParameters();// 全局配置
  13. }

        接着你既可以在当前类中把你要设置的header参数传进去,我是单独封装了一个添加参数的内置方法,这样好处就是代码不会造成过长。

  1. /**
  2. * 添加head参数配置
  3. */
  4. private List<Parameter> getParameterList() {
  5. ParameterBuilder clientIdTicket = new ParameterBuilder();
  6. List<Parameter> pars = new ArrayList<Parameter>();
  7. (Constant.TOKEN_HERDER_KEY).description("token令牌")
  8. .modelRef(new ModelRef("string"))
  9. .parameterType("header")
  10. .required(false).build(); //设置false,表示clientId参数 非必填,可传可不传!
  11. (());
  12. return pars;
  13. }

        假如你要添加多个header 请求头参数,那你就再new 一个 ParameterBuilder()类,然后一样的设置,在pars集合中将你参数build后add进去即可。Constant是我定义的一个常量类,这个你们若是不习惯直接定义字符串命名也可。

        最后一步就是将此刻封装的header 头传入到全局配置方法中。

.globalOperationParameters(this.getParameterList());

        大家能看的明白不?若不能,我再把swagger配置全部粘贴到下边,大家好好的连串解读一下,基本看完我说的,你们下一次若是遇到再header添加自定义请求头的话,直接怼它,这我未出生就会了。

        如下是完整swagger 配置。

  1. package ;
  2. import ;
  3. import ;
  4. import ;
  5. import ;
  6. import ;
  7. import ;
  8. import ;
  9. import ;
  10. import ;
  11. import ;
  12. import ;
  13. import ;
  14. import ;
  15. import ..EnableSwagger2;
  16. import ;
  17. import ;
  18. /**
  19. * swagger配置
  20. *
  21. * @Author
  22. * @Date 2021-06-01 13:00
  23. */
  24. @Configuration //必须存在
  25. @EnableSwagger2 //必须存在
  26. public class SwaggerConfig {
  27. /**
  28. * swagger文档配置
  29. */
  30. @Bean
  31. public Docket customDocket() {
  32. return new Docket(DocumentationType.SWAGGER_2)
  33. .apiInfo(apiInfo())
  34. .select()
  35. .apis((""))
  36. .paths(())
  37. .build()
  38. .globalOperationParameters(this.getParameterList());// 全局配置
  39. }
  40. /**
  41. * 添加head参数配置
  42. */
  43. private List<Parameter> getParameterList() {
  44. ParameterBuilder clientIdTicket = new ParameterBuilder();
  45. List<Parameter> pars = new ArrayList<Parameter>();
  46. (Constant.TOKEN_HERDER_KEY).description("token令牌")
  47. .modelRef(new ModelRef("string"))
  48. .parameterType("header")
  49. .required(false).build(); //设置false,表示clientId参数 非必填,可传可不传!
  50. (());
  51. return pars;
  52. }
  53. /**
  54. * api相关配置
  55. */
  56. private ApiInfo apiInfo() {
  57. return new ApiInfoBuilder()
  58. .title("swagger 接口文档")
  59. .contact(new Contact("review", "", ""))
  60. .description("swagger-bootstrap-ui")
  61. .termsOfServiceUrl("http://localhost:8888/")
  62. .version("1.0")
  63. .build();
  64. }
  65. }

4. 测试????

        配置后,重启下项目刷新一下swagger 访问链接。诺,这不加的header类型就出来了么。是不是很简单,直接配置也就不需要所有人都跑去postman进行接口测试了。

5. 往期推荐????

滴~如下推荐【Spring Boot 进阶篇】的学习大纲,请小伙伴们注意查收。

Spring Boot进阶(01):Spring Boot 集成 Redis,实现缓存*

Spring Boot进阶(02):使用Validation进行参数校验

Spring Boot进阶(03):如何使用MyBatis-Plus实现字段的自动填充

Spring Boot进阶(04):如何使用MyBatis-Plus快速实现自定义sql分页

Spring Boot进阶(05):Spring Boot 整合RabbitMq,实现消息队列服务

Spring Boot进阶(06):Windows10系统搭建 RabbitMq Server 服务端

Spring Boot进阶(07):集成EasyPoi,实现Excel/Word的导入导出

Spring Boot进阶(08):集成EasyPoi,实现Excel/Word携带图片导出

Spring Boot进阶(09):集成EasyPoi,实现Excel文件多sheet导入导出

Spring Boot进阶(10):集成EasyPoi,实现Excel模板导出成PDF文件

Spring Boot进阶(11):Spring Boot 如何实现纯文本转成.csv格式文件?

Spring Boot进阶(12):Spring Boot 如何获取Excel sheet页的数量?

Spring Boot进阶(13):Spring Boot 如何获取@ApiModelProperty(value = “序列号“, name = “uuid“)中的value值name值?

Spring Boot进阶(14):Spring Boot 如何手动连接库并获取指定表结构?一文教会你

Spring Boot进阶(15):根据数据库连接信息指定分页查询表结构信息

Spring Boot进阶(16):Spring Boot 如何通过Redis实现手机号验证码功能?

Spring Boot进阶(17):Spring Boot如何在swagger2中配置header请求头等参数信息

Spring Boot进阶(18):SpringBoot如何使用@Scheduled创建定时任务?

Spring Boot进阶(19):Spring Boot 整合ElasticSearch

Spring Boot进阶(20):配置Jetty容器

Spring Boot进阶(21):配置Undertow容器

Spring Boot进阶(22):Tomcat与Undertow容器性能对比分析

Spring Boot进阶(23):实现文件上传

Spring Boot进阶(24):如何快速实现多文件上传?

Spring Boot进阶(25):文件上传的单元测试怎么写?

Spring Boot进阶(26):Mybatis 中 resultType、resultMap详解及实战教学

Spring Boot进阶(27):Spring Boot 整合 kafka(环境搭建+演示)

Spring Boot进阶(28):Jar包Linux后台启动部署及滚动日志查看,日志输出至实体文件保存

Spring Boot进阶(29):如何正确使用@PathVariable,@RequestParam、@RequestBody等注解?不会我教你,结合Postman演示

Spring Boot进阶(30):@RestController和@Controller 注解使用区别,实战演示

...

6. 文末????

        如果想系统性的学习Spring Boot,小伙伴们直接订阅bug菌专门为大家创建的Spring Boot专栏《滚雪球学Spring Boot》从入门到精通,从无到有,从零到一!以知识点+实例+项目的学习模式由浅入深对Spring Boot框架进行学习&使用。

       我是bug菌,一名想走????出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!

关注公众号,获取最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等硬核资源