【问题标题】:How do I specify allowed values for global header parameters in Springfox v3?如何在 Springfox v3 中指定全局标头参数的允许值?
【发布时间】:2020-12-23 10:10:29
【问题描述】:

我尝试将 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();
}

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

【问题讨论】:

    标签: spring-boot springfox


    【解决方案1】:

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

    在您的createRequestParameter 中使用代码:

    final String bestCookie = "Peanut Butter Chocolate Chunk";
    new RequestParameterBuilder()
            .in("path")
            .name("Best Cookies")
            .description("Put your favorite cookie here")
            .query(q ->
                q.model(m -> m.scalarModel(ScalarType.STRING))
                        .defaultValue(bestCookie)
                        .enumerationFacet(e -> e.allowedValues(
                                new AllowableListValues(
                                        List.of(bestCookie, "There's no other best cookies",
                                                "You heard what I said"),
                                        "string")))
            )
            .required(true)
            .build();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 2014-09-24
      • 1970-01-01
      • 2015-03-12
      相关资源
      最近更新 更多