如何去除Open API和Json View生成的后缀?

问题描述 投票:0回答:2

祝大家有美好的一天!

我有一个包含实体信息的 DTO 类。我正在使用

spring-docs-openapi-ui
1.4.8 来记录该项目。我使用 JsonViews 是为了在给定操作类型的情况下显示类的特定属性,如果操作是
GET
,我将使用 Json ClassDetail 视图。如果操作是
PUT
,我将使用ClassUpdate视图。使用 ClassDetailDTO 视图或 ClassUpdateDTO 视图在 BaseClass 中标记的属性将显示在有关操作的响应中。但是,当我构建并检查生成的文档时,对于这两个操作,一些属性标记有操作的视图类型。有办法禁用这个吗?

这就是它的样子。

EntityDTO_Class更新

田野 数据类型
id 绳子
标识符 标识符DTO_ClassUpdated[]

EntityDTO_Write

田野 必填 数据类型
标识符 没有 标识符DTO_Write[]

想澄清一下,有没有办法去掉后缀?

_Write
_ClassUpdated
_ClassDetail

提前致谢。

java swagger-ui jackson-databind springdoc-openapi-ui
2个回答
0
投票

我认为这对你来说已经太晚了,但答案可以帮助以后的人,所以我分享它:你可以在注释中添加

ignoreJsonView = true
@Operation
。 例如:

@Operation(summary = "Retrieve a todo by id", ignoreJsonView = true)

我是怎么找到它的?我从公共存储库下载了源代码并搜索了

@JsonView
。在代码中你可以找到一种忽略视图的方法:

if (apiOperation != null && apiOperation.ignoreJsonView()) {
    jsonViewAnnotation = null;
    jsonViewAnnotationForRequestBody = null;
}

0
投票

只需将此 bean 添加到您的 OpenApiConfiguration 中

@Bean
public ModelConverter modelConverter(ObjectMapper objectMapper){
    return new ModelResolver(objectMapper){
        @Override
        protected String decorateModelName(AnnotatedType type, String originalName) {
            return originalName;
        }
    };
}
© www.soinside.com 2019 - 2024. All rights reserved.