博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swagger2 添加HTTP head参数,解决用户是token信息保留
阅读量:7050 次
发布时间:2019-06-28

本文共 1839 字,大约阅读时间需要 6 分钟。

转:http://blog.csdn.net/u014044812/article/details/71473226

大家使用swagger往往会和JWT一起使用,而一般使用jwt会将token放在head里,这样我们在使用swagger测试的时候并不方便,因为跨域问题它默认不能自定义head参数。然后自己去网上找,发现国内大多数的都是写一个Filter接口,然后添加到配置。这样极大的破坏了程序的完整性。想想这相当于维护两套代码。我们只是需要一个简单的小功能,国外大多是修改Swagger的index页面:

 

[html] 
 
 
  1. window.swaggerUi = new SwaggerUi({  
  2.             discoveryUrl: "http://pathtomyservice.com/resources",  
  3.                 headers: { "testheader" : "123" },  
  4.                 apiKey: "123",  
  5.                 apiKeyName: "Api-Key",  
  6.                 dom_id:"swagger-ui-container",  
  7.                 supportHeaderParams: true,  
  8.                 supportedSubmitMethods: ['get', 'post', 'put', 'delete'],  
  9.                 onComplete: function(swaggerApi, swaggerUi){  
  10.                     if(console) {  
  11.                         console.log("Loaded SwaggerUI");  
  12.                         console.log(swaggerApi);  
  13.                         console.log(swaggerUi);  
  14.                     }  
  15.                   $('pre code').each(function(i, e) {hljs.highlightBlock(e)});  
  16.                 },  
  17.                 onFailure: function(data) {  
  18.                     if(console) {  
  19.                         console.log("Unable to Load SwaggerUI");  
  20.                         console.log(data);  
  21.                     }  
  22.                 },  
  23.                 docExpansion: "none"  
  24.             });  

supportHeaderParams默认为false,而我用的是swagger2,不需要配置静态的那些东西,所以我在SwaggerConfig添加了几行代码:

 

 

[java] 
 
 
  1. @EnableSwagger2  
  2. @EnableWebMvc  
  3. @ComponentScan("com.g.web")  
  4. public class SwaggerConfig {  
  5.     @Bean  
  6.     public Docket api(){  
  7.         ParameterBuilder tokenPar = new ParameterBuilder();  
  8.         List<Parameter> pars = new ArrayList<Parameter>();  
  9.         tokenPar.name("x-access-token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();  
  10.         pars.add(tokenPar.build());  
  11.         return new Docket(DocumentationType.SWAGGER_2)  
  12.             .select()  
  13.             .apis(RequestHandlerSelectors.any())  
  14.             .paths(PathSelectors.regex("/api/.*"))  
  15.             .build()  
  16.             .globalOperationParameters(pars)  
  17.             .apiInfo(apiInfo());  
  18.     }  
  19.   
  20.     private ApiInfo apiInfo() {  
  21.         return new ApiInfoBuilder()  
  22.             .title("后台接口文档与测试")  
  23.             .description("这是一个给app端人员调用server端接口的测试文档与平台")  
  24.             .version("1.0.0")  
  25.             .termsOfServiceUrl("http://terms-of-services.url")  
  26.             //.license("LICENSE")  
  27.             //.licenseUrl("http://url-to-license.com")  
  28.             .build();  
  29.     }  
  30. }  

前四行代码是添加head参数的,前台效果是这样的:

 

你可能感兴趣的文章
Jmeter(三)-简单的HTTP请求(非录制)
查看>>
linux查看系统类型和版本
查看>>
ThinkPHP将上传问件添加到数据库
查看>>
python 不同目录间的模块调用
查看>>
centos7 安装 chrome
查看>>
IOS 关于上传图片裁剪以及压缩,确保高清
查看>>
HDU - 6115 Factory (LCA 倍增)
查看>>
unity客户端与c++服务器之间的简单通讯_1
查看>>
Python_反射
查看>>
Codeforces-963 D Frequency of String
查看>>
MyBatis-mybatis全局映射文件解析
查看>>
WebApi 跨域解决方案 --CORS
查看>>
MySQL系列详解五: xtrabackup实现完全备份及增量备份详解-技术流ken
查看>>
单独编译Android源代码中的模块
查看>>
manjaro安装mysql5.7
查看>>
记录零散的知识点
查看>>
H5上传图片并使用canvas制作海报
查看>>
一个docker镜像中的目录删除不了问题
查看>>
LAMP(1) 在VirtualBox里安装Ubuntu Server
查看>>
并行开发-线程同步机制
查看>>