swagger3 不能传header未解之谜
刚刚启用swagger3
pom依赖只需要加上 springfox-boot-starter 相当简介
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>
然后在启动springboot的启动类增加一个注解,@EnableOpenApi 就OK了。
Controller上增加各种注解,开始直接用的swagger2的注解,一样生效。兼容性不错。
开始swagger3的页面看着还有点不习惯,适应两天就好了。
后面是重点,开始很顺利,遇到一个小问题,获取一个header参数。直接用注解 @RequestHeader 可以收到请求。(用postman)
不用加任何注解,swagger很聪明的识别了这个参数,但是在swagger直接请求接口,提示:
"400 BAD_REQUEST \"Missing request header 'Authorization' for method parameter of type String\""
实在是不解!
后面是各种加注解、调试参数,一样就是无法接收到header参数。
网上查也并没有发现太多类似的文章。
不解~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在这条漂亮的分割线以下,找到了问题的所在。
不是swagger的问题,各种配置也都对,问题就在于,参数名!“Authorization” 这个header是用来存认证信息的,因为这次做的也正式认证接口,认证信息从这个header中获取。
结果正常的写法就无法获取这个header了。
swagger是有通用的或者叫做全局的添加认证信息的设置的,就比如你的接口都需要检查token就可以给所以的接口设置统一的token。
具体的开启如下:
@Beanpublic Docket createRestApi() {//返回文档摘要信息return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select()//.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).apis(RequestHandlerSelectors.withMethodAnnotation(Operation.class)).paths(PathSelectors.any()).build().securitySchemes(securitySchemes()).securityContexts(securityContexts());//.globalRequestParameters(getGlobalRequestParameters());//.globalResponses(HttpMethod.POST, getGlobalResonseMessage());}private List<SecurityScheme> securitySchemes() {List<SecurityScheme> securitySchemes = new ArrayList<>();securitySchemes.add(new ApiKey("Authorization", "Authorization", "header"));return securitySchemes;}private List<SecurityContext> securityContexts() {List<SecurityContext> securityContexts = new ArrayList<>();securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.regex("^(?!auth).*$")).build());return securityContexts;}private List<SecurityReference> defaultAuth() {AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];authorizationScopes[0] = authorizationScope;List<SecurityReference> securityReferences = new ArrayList<>();securityReferences.add(new SecurityReference("Authorization", authorizationScopes));return securityReferences;}
很多地方还没有详细的研究,只是解决了当前的问题,以上代码仅供参考。
同时还引出了另一个问题,如果要从header中获取这个参数,Authorization。不加注解,swagger也会自动给添加一个参数。参数名正是Authorization,不能用,但是不传还提示必填。
所以想取消这个参数,又发现一个小知识点,不想要的参数可以隐藏,在参数前加一个注解 @ApiIgnore
算是比较完美的解决了!
swagger3 不能传header未解之谜相关推荐
- 彭博社:Web3 巨大潜力之下的未解之谜
来源:Bloomberg 撰文:Emily Nicolle 风投基金 Andreessen Horowitz (a16z) 的合伙人 Chris Dixon 认为,以区块链为基础的互联网未来 (即所谓 ...
- 卡巴斯基实验室被攻陷后的四个未解之谜
前几天,卡巴斯基实验室被Duqu 2.0攻陷的消息传出来后,尽管安全厂商对Duqu 2.0的代码和对攻击者采用的0Day攻击进行了深入分析,目前仍有许多未解之谜. 先不说这事儿是谁干的,所有人的研究都 ...
- 2017互联网十大未解之谜,你能回答几个?
0关注「实验楼」,每天分享一个项目教程 互联网行业发生许多重大事件,比如微信小程序上线.顺丰菜鸟互撕.共享单车接连倒闭.乐视危机发酵.无人超市崛起.求职少年李文星之死.京东腾讯入股唯品会等.在互联网的 ...
- 深度丨AI界的七大未解之谜:OpenAI丢出一组AI研究课题
今天,OpenAI在官方博客上丢出了7个研究过程中发现的未解决问题. OpenAI希望这些问题能够成为新手入坑AI的一种有趣而有意义的方式,也帮助从业者提升技能. OpenAI版AI界七大未解之谜,现 ...
- AI界的七大未解之谜:OpenAI丢出一组AI研究课题
来源:三体智讯 今天,OpenAI在官方博客上丢出了7个研究过程中发现的未解决问题. OpenAI希望这些问题能够成为新手入坑AI的一种有趣而有意义的方式,也帮助从业者提升技能. OpenAI版AI界 ...
- 难道这又是个未解之谜?--- 关于DLL中使用ADODATASET出错的问题
难道这又是个未解之谜?--- 关于DLL中使用ADODATASET出错的问题 Delphi / Windows SDK/API http://www.delphi2007.net/DelphiAPI/ ...
- where显示null行_Python 之 MySql“未解之谜”14-- 都是 NULL 惹的祸(下)
最近在网上看到 MySql 关于 NULL 的文章 有几个值得争议的观点,我们一起看看 ● 准备工作 MySql 版本 5.7,InnoDB 存储引擎, 表 test 数据量 10 w, 其中 a , ...
- 一个常见的物理现象,直今还是未解之谜!
全世界只有3.14 % 的人关注了 爆炸吧知识 在我们的日常生活中存在着很多有趣的物理现象, 科学家对这些现象进行深入研究后,可以通过这些现象延伸,从而在前沿科技发展上得到很大的帮助,甚至去解决宇宙中 ...
- hibernate 复合主键 根据主键删除_Python 之 MySql“未解之谜”11--主键 id 那些事
主键 id 用自增和 uuid 有什么区别? ● uuid 有 16 个字节,比 int(4 byte)和 bigint(8 byte)占用更多存储空间 有大量数据的时候 uuid 主键不会像自增主键 ...
最新文章
- jquery Syntax error, unrecognized expression:的解决方法
- MCMC笔记:吉布斯采样(Gibbs)
- centos 搭建日志服务器
- creo如何更改打开时显示方式_Creo4.0入门教程(3):设置工作目录和打开以及保存文件...
- win7下安装pip——Python的包管理工具
- 嵌入式Linux系统编程学习之六make工程管理和Makefile
- vim的安装以及配置
- Ceph测试工具总结
- yytext显示html并编辑,YYText的使用
- 畅购商城项目v1-环境搭建
- 手机摄影:黄埔军校旧址(下)
- Richer Convolutional Features for Edge Detection(RCF-PYTorch)部署
- python 战舰_战舰python代码学院
- 上海七宝惊现海宝美眉
- coalesce函数的用法
- 小数化分数的口诀表_循环小数化分数口诀
- hexo 利用 Markdown 语法画 mermaid 流程图
- 华硕Prime B250M-K+英特尔i3 7100 3.9GHz+HD 630黑苹果EFI引导文件
- [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateF
- 自适应网站与非自适应有什么不同