Swagger2 添加HTTP head参数,解决用户是token信息保留

时间:2023-03-09 20:41:00
Swagger2 添加HTTP head参数,解决用户是token信息保留

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

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

  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添加了几行代码:

  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. private ApiInfo apiInfo() {
  20. return new ApiInfoBuilder()
  21. .title("后台接口文档与测试")
  22. .description("这是一个给app端人员调用server端接口的测试文档与平台")
  23. .version("1.0.0")
  24. .termsOfServiceUrl("http://terms-of-services.url")
  25. //.license("LICENSE")
  26. //.licenseUrl("http://url-to-license.com")
  27. .build();
  28. }
  29. }

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

Swagger2 添加HTTP head参数,解决用户是token信息保留