当前位置: 首页 > 知识库问答 >
问题:

如何使用springdoc更改Swagger文档中LocalDateTime的默认模式?

宋唯
2023-03-14

我们使用Spring靴和Spring Boothttps://springdoc.org/生成OpenApi文档。我们希望更改LocalDateTime的默认模式,因此我们不会在每次使用LocalDateTime时都使用相同的注释。因此,我补充说:

    static { 
        SpringDocUtils.getConfig().replaceWithSchema(LocalDateTime.class, 
                new StringSchema().example("2021-07-05T10:35:17.000").pattern("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[.]\\d{3}")); 
    } 

它起作用了。问题是现在不可能为特定字段添加自定义描述或示例:

    @Schema(description = "important date") 
    private LocalDateTime aDate; 

如您所见,Swagger UI中缺少以下描述:缺少描述的屏幕截图

有可能修复吗?是否有其他方法为LocalDateTime创建默认自定义模式?

共有1个答案

夹谷俊远
2023-03-14

您可以使用OpenAPICustomerCustomiser

@Bean
public OpenApiCustomiser openAPICustomiser() {​​​​​​​​​
    return openApi -> {​​​​​​​​​
        openApi.getComponents().getSchemas().forEach((s, schema) -> {​​​​​​​​​
            Map<String, Schema> properties = schema.getProperties();
            if (properties == null) {​​​​​​​​​
                properties = Map.of();
            }​​​​​​​​​
            for (String propertyName : properties.keySet()) {​​​​​​​​​
                Schema propertySchema = properties.get(propertyName);
                if (propertySchema instanceof DateTimeSchema) {​​​​​​​​​
                    properties.replace(propertyName, new StringSchema()
                            .example("2021-07-05T10:35:17.000")
                            .pattern("^\\d{​​​​​​​​​4}​​​​​​​​​-\\d{​​​​​​​​​2}​​​​​​​​​-\\d{​​​​​​​​​2}​​​​​​​​​T\\d{​​​​​​​​​2}​​​​​​​​​:\\d{​​​​​​​​​2}​​​​​​​​​:\\d{​​​​​​​​​2}​​​​​​​​​[.]\\d{​​​​​​​​​3}​​​​​​​​​$")
                            //copies original description
                            .description(propertySchema.getDescription()));
                }​​​​​​​​​
            }​​​​​​​​​
        }​​​​​​​​​);
    }​​​​​​​​​;
}​​​​​​​​​
 类似资料:
  • 我已经尝试更改json文件中的basePath,这似乎只会更改swagger UI的底部“baseurl”。我想去掉在我的招摇过市UI中作为组标题出现的“默认设置”。有人能解决这个问题吗?我正在使用Swagger~2.0。

  • 我想更改swagger授权UI屏幕上的文本。 我想将授权标签更改为存储。 请从swagger UI授权屏幕中找到以下屏幕截图 我想改变它的原因是领导小姐。如果用户传递了无效凭据,它仍然显示为已授权。 一旦我们执行请求,用户名和密码的实际验证就会发生。 我也很好,如果任何人有一个答案来验证凭据,一旦我们点击授权按钮,如下所示。 任何想法或想法都将受到赞赏 非常感谢。

  • 我正在使用Yii 2高级应用程序模板,AdminLTE资产包和Gii代码生成器。 以下是我的例子: 我需要更改模板,以便删除“CreateLabTiposMovimentos”按钮(并修改更多内容)。 在Gii创建CRUD后,我删除了每个按钮,但我想更改模板,以便Gii可以自动执行。

  • 如https://stackoverflow.com/A/34750537/148844所述,我的模型中有以下内容 然而,Swagger仍然将日期显示为带区域的日期-时间(date-time-with-zone)。我还尝试了。如何更改文档日期格式示例? 这是有关财产的文件。

  • 我有一个Spring启动应用程序,使用springdoc-openapi启用了昂首阔步的留档。由于某种原因,有一个名为/application.wadl的终结点会自动创建,而不会添加任何逻辑。有没有办法禁用wadl终结点?我没有在application.yml文件中添加特定的Wadl配置

  • 我在这里找到了一个非常简洁的链接来托管Swagger用户界面中的yaml文件,但是它使用了Springfox而不是Springdoc,所以我想知道是否有任何其他类似的方法,因为我的公司更喜欢后者。 我真的很感激任何帮助,只要有个导游就可以了。