0

如果我创建了一个 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"));
    }
4

1 回答 1

0

您可以使用 OpenApiCustomiser,它在所有 OperationCustomizer(s) 之后调用。

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

@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()));
                        }
                    }
            );
}
于 2020-05-01T12:03:44.390 回答