祝大家有美好的一天!
我有一个包含实体信息的 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
?
提前致谢。
我认为这对你来说已经太晚了,但答案可以帮助以后的人,所以我分享它:你可以在注释中添加
ignoreJsonView = true
@Operation
。
例如:
@Operation(summary = "Retrieve a todo by id", ignoreJsonView = true)
我是怎么找到它的?我从公共存储库下载了源代码并搜索了
@JsonView
。在代码中你可以找到一种忽略视图的方法:
if (apiOperation != null && apiOperation.ignoreJsonView()) {
jsonViewAnnotation = null;
jsonViewAnnotationForRequestBody = null;
}
只需将此 bean 添加到您的 OpenApiConfiguration 中
@Bean
public ModelConverter modelConverter(ObjectMapper objectMapper){
return new ModelResolver(objectMapper){
@Override
protected String decorateModelName(AnnotatedType type, String originalName) {
return originalName;
}
};
}