Springdoc GroupedOpenApi不遵循通过OperationCustomizer设置的全局参数

时间:2020-07-08 10:28:24

标签: spring-boot springdoc springdoc-openapi-ui

使用GroupedOpenApi定义API组时,在参数列表中不存在添加到每个端点的通用参数集。 下面是各自的代码

@Bean
public GroupedOpenApi v1Apis() {
    return GroupedOpenApi.builder().group("v1 APIs")
            // hide all v2 APIs
            .pathsToExclude("/api/v2/**", "/v2/**")
            // show all v1 APIs
            .pathsToMatch("/api/v1/**", "/v1/**")
            .build();
}

将标准标头添加到所有端点的类

@Component
public class GlobalHeaderAdder implements OperationCustomizer {
    @Override
    public Operation customize(Operation operation, HandlerMethod handlerMethod) {
        operation.addParametersItem(new Parameter().$ref("#/components/parameters/ClientID"));
        operation.addSecurityItem(new SecurityRequirement().addList("Authorization"));
        List<Parameter> parameterList = operation.getParameters();
        if (parameterList!=null && !parameterList.isEmpty()) {
            Collections.rotate(parameterList, 1);
        }
        return operation;
    }
}

实际输出

Actual Output

预期产量

Expected Output

要重现此问题,请克隆https://github.com/debargharoy/springdoc-test

解决方法

添加要包含/排除在应用程序属性文件中的路径可以解决该错误。但是,在代码级别上的某些东西将不胜感激。

1 个答案:

答案 0 :(得分:2)

在构建Api组时附加所需的const mac = req.query.mac; const macArr = mac.split(','); var sql = mysql.format("SELECT * FROM user_email WHERE macId IN (?)", macArr); connection.query(sql, function(err, row) ...{ ... .. } 对象。

OperationCustomizer

编辑:答案已参考@Value not providing values from application properties Spring Boot

更新