Swagger2中配置添加全局header

引入maven依赖

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

添加配置类


@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
                .paths(PathSelectors.any())
                .build()
                .securitySchemes(securitySchemes())
                .securityContexts(securityContexts());
    }

    private List<SecurityContext> securityContexts() {
        List<SecurityContext> securityContextList = new ArrayList<>();
        List<SecurityReference> securityReferenceList = new ArrayList<>();
        securityReferenceList.add(new SecurityReference("custom-token", scopes()));
        securityContextList.add(SecurityContext
                        .builder()
                        .securityReferences(securityReferenceList)
                        .forPaths(PathSelectors.any())
                        .build()
        );
        return securityContextList;
    }

    private AuthorizationScope[] scopes() {
        return new AuthorizationScope[]{new AuthorizationScope("global", "accessAnything")};
    }

    private List<ApiKey> securitySchemes() {
        List<ApiKey> apiKeyList = new ArrayList<>();
        apiKeyList.add(new ApiKey("custom-token", "custom-token", "header"));
        return apiKeyList;
    }
}

说明

此配置会在swagger-ui页面上部添加authorize模块,点击:

在这里插入图片描述
输入后就会在所有接口请求时在 header 中添加 custom-token:[value]

原文链接:https://blog.youkuaiyun.com/xuehuayouling/article/details/108232977

### 如何在Swagger2中正确配置请求头 要在Swagger2配置全局请求头,可以通过修改`Docket` Bean 实例中的 `globalOperationParameters()` 方法来完成。以下是具体的实现方式: #### 修改 SwaggerConfig 配置类 首先,在Swagger配置文件中定义一个`Docket`类型的Bean实例,并在此基础上添加全局参数配置。这一步骤涉及创建一个新的`ParameterBuilder`对象并将其加入到`List<Parameter>`集合中。 ```java import io.swagger.annotations.Api; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import java.util.ArrayList; import java.util.List; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket docket() { List<Parameter> parameters = new ArrayList<>(); // 添加自定义 Header 参数 parameters.add(new ParameterBuilder() .name("Authorization") // 设置 Header 名称 .description("登录令牌") // 描述信息 .modelRef(new ModelRef("string")) // 数据类型 .parameterType("header") // 参数类型 (header/form/path/query/body) .required(false) // 是否必填 .build()); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build() .globalOperationParameters(parameters); // 将参数列表应用至全局 } } ``` 上述代码片段展示了如何通过`globalOperationParameters()`方法将指定的Header参数应用于所有的API接口[^1][^2]。 #### 关键点解析 - **ParameterBuilder**: 构建单个参数的对象,用于描述该参数的具体属性。 - **ModelRef**: 定义数据模型引用,此处表示字符串类型的数据结构。 - **globalOperationParameters()**: 此函数允许开发者向所有API操作附加一组通用参数,这些参数可以作为查询、路径或头部的一部分传递给服务器[^3]。 当以上配置完成后,任何访问此服务端口下的API都会自动携带所设定好的Header字段(如上例中的“Authorization”),从而简化了前端调用逻辑以及提升了安全性控制能力。 ### 注意事项 如果某些特定接口不需要继承此类默认Headers,则可以在对应Controller层单独处理或者利用@ApiOperation注解重新声明覆盖原有设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值