zoukankan      html  css  js  c++  java
  • Swagger2 添加HTTP head参数,解决用户是token信息保留

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

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

    [html] view plain copy
     
    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] view plain copy
     
    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参数的,前台效果是这样的:

  • 相关阅读:
    异常处理
    PAT——1048. 数字加密
    PAT——1047. 编程团体赛
    PAT——1046. 划拳
    PAT——1045. 快速排序(25)
    PAT——1044. 火星数字
    PAT——1043. 输出PATest
    PAT——1042. 字符统计
    PAT——1041. 考试座位号
    PAT——1040. 有几个PAT
  • 原文地址:https://www.cnblogs.com/fengli9998/p/7852685.html
Copyright © 2011-2022 走看看