欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【转】Swagger2 添加HTTP head参数

程序员文章站 2022-03-21 19:48:00
大家使用swagger往往会和JWT一起使用,而一般使用jwt会将token放在head里,这样我们在使用swagger测试的时候并不方便,因为跨域问题它默认不能自定义head参数。然后自己去网上找,发现国内大多数的都是写一个Filter接口,然后添加到配置。这样极大的破坏了程序的完整性。想想这相当 ......

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

 

[html] view plain copy window.swaggerUi = new SwaggerUi({               discoveryUrl: "http://pathtomyservice.com/resources",                   headers: { "testheader" : "123" },                   apiKey: "123",                   apiKeyName: "Api-Key",                   dom_id:"swagger-ui-container",                   supportHeaderParams: true,                   supportedSubmitMethods: ['get', 'post', 'put', 'delete'],                   onComplete: function(swaggerApi, swaggerUi){                       if(console) {                           console.log("Loaded SwaggerUI");                           console.log(swaggerApi);                           console.log(swaggerUi);                       }                     $('pre code').each(function(i, e) {hljs.highlightBlock(e)});                   },                   onFailure: function(data) {                       if(console) {                           console.log("Unable to Load SwaggerUI");                           console.log(data);                       }                   },                   docExpansion: "none"               });  

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

 

[java] view plain copy @EnableSwagger2   @EnableWebMvc   @ComponentScan("com.g.web")   public class SwaggerConfig {       @Bean       public Docket api(){           ParameterBuilder tokenPar = new ParameterBuilder();           List<Parameter> pars = new ArrayList<Parameter>();           tokenPar.name("x-access-token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();           pars.add(tokenPar.build());           return new Docket(DocumentationType.SWAGGER_2)               .select()               .apis(RequestHandlerSelectors.any())               .paths(PathSelectors.regex("/api/.*"))               .build()               .globalOperationParameters(pars)               .apiInfo(apiInfo());       }          private ApiInfo apiInfo() {           return new ApiInfoBuilder()               .title("后台接口文档与测试")               .description("这是一个给app端人员调用server端接口的测试文档与平台")               .version("1.0.0")               .termsOfServiceUrl("http://terms-of-services.url")               //.license("LICENSE")               //.licenseUrl("http://url-to-license.com")               .build();       }   }  


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

【转】Swagger2 添加HTTP head参数

原文:http://blog.csdn.net/u014044812/article/details/71473226