如何在 Springfox v3 中为全局标头参数指定允许的值?

问题描述

我尝试将 springfox 的 swagger ui 配置从 2.9.2 版迁移到 3.0.0 版。

版本 2.9.2 中,我可以做这样的事情来指定我的全局标头允许哪些值:

@Bean
public Docket swaggerDocket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            [...]
            .build()
            .groupName("Some API")
            .directModelSubstitute(LocalDate.class,java.sql.Date.class)
            .useDefaultResponseMessages(false)
            .globalOperationParameters(
                    Arrays.asList(new ParameterBuilder()
                            .name("Environment")
                            .modelRef(new ModelRef("string"))
                            .allowableValues(new AllowableListValues(List.of("A","B","C"),"string"))
                            .parameterType("header")
                            .required(true)
                            .build()));
}

但在版本 3.0.0 "globalOperationParameters"标记为已弃用。 我尝试使用新的 "globalRequestParameters" 而不是获得与旧版本相同的结果:

@Bean
public Docket swaggerDocket(TypeResolver typeResolver) {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            [...]
            .build()
            .groupName("Some API")                
            .directModelSubstitute(LocalDate.class,java.sql.Date.class)
            .useDefaultResponseMessages(false)
            .globalRequestParameters(List.of(createRequestParameter("Environment",true)));
}

private RequestParameter createRequestParameter(String headerName,boolean required) {
    return new RequestParameterBuilder()
            .name(headerName)
            .required(required)
            .query(q -> q.model(modelSpecificationBuilder -> modelSpecificationBuilder.scalarModel(ScalarType.STRING)))
            .in(ParameterType.HEADER)
            .build();
}

有没有办法添加允许值列表

解决方法

在弄乱了 intelliJ 自动完成功能后弄清楚了这一点。在查询中,使用模型,然后使用 enumerationFacet 方法。我会保持快速简便:

在您的 Azure Active Directory Graph 中使用代码:

createRequestParameter

我会包含下拉菜单的图片,但我没有发布它们的声誉。