Springdoc:排除某些端点的自定义全局头参数

时间:2020-04-14 21:43:24

标签: header springdoc

如果我创建向所有端点添加新的全局自定义标头参数的OperationCustomizer,如何为较小的不适用端点子集添加排除列表?

@Bean
    public OperationCustomizer customize() {
        return (operation, handlerMethod) -> operation.addParametersItem(
                new Parameter()
                        .in("header")
                        .required(true)
                        .schema(new StringSchema())
                        .description("Customer Header Parameter")
                        .name("custom-header-parameter"));
    }

1 个答案:

答案 0 :(得分:0)

您可以使用OpenApiCustomiser,在所有OperationCustomizer之后调用。

以下是您可以修改的示例代码:

@Bean
public OpenApiCustomiser customerGlobalHeaderOpenApiCustomiser() {
    return openApi -> openApi.getPaths().values().stream().flatMap(pathItem -> pathItem.readOperations().stream())
            .forEach(operation -> {
                        // remove the global header only for operationid = search
                        if ("search".equals(operation.getOperationId())) {
                            operation.getParameters().removeIf(parameter1 -> "custom-header-parameter".equals(parameter1.getName()));
                        }
                    }
            );
}