如何在swag-go中一次性配置通用HTTP请求头?
针对你的需求,分两种主流Swagger实现方案给出配置方式:
一、Springfox(Swagger 2.x,适配Spring Boot 2.x及以下)
在Swagger配置类中,通过Docket的globalOperationParameters方法添加全局请求头参数,配置后Swagger UI顶部会出现全局输入框,填写一次后所有接口自动携带该请求头:
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() // 替换成你的接口所在包路径 .apis(RequestHandlerSelectors.basePackage("com.your.project.controller")) .paths(PathSelectors.any()) .build() .globalOperationParameters(Collections.singletonList( new ParameterBuilder() .name("Authorization") .description("认证Token格式:Bearer {token}") .modelRef(new ModelRef("string")) .parameterType("header") // 根据业务需求设置是否必填 .required(true) .build() )); } }
二、SpringDoc OpenAPI(适配Spring Boot 3.x及以上,OpenAPI 3.x规范)
通过全局安全注解配置,Swagger UI右上角会出现「Authorize」按钮,点击输入Token后所有接口自动复用认证信息:
@Configuration // 全局启用该安全认证方案 @OpenAPIDefinition(security = { @SecurityRequirement(name = "BearerAuth") }) // 定义Bearer Token认证规则 @SecurityScheme( name = "BearerAuth", type = SecuritySchemeType.HTTP, scheme = "bearer", bearerFormat = "JWT", description = "输入格式:Bearer {你的JWT Token}" ) public class OpenApiConfig { @Bean public GroupedOpenApi publicApi() { return GroupedOpenApi.builder() .group("public-api") .pathsToMatch("/**") .build(); } }
特殊情况处理
如果个别接口不需要携带Authorization头:
- Springfox:在对应接口方法上添加
@ApiImplicitParams覆盖全局参数,或者在Docket中排除该接口路径 - SpringDoc:在对应接口方法上添加
@SecurityRequirements(empty = true),取消该接口的认证要求
内容的提问来源于stack exchange,提问作者vyakhir
相关产品推荐
相关产品推荐

