繁体   English   中英

通过 Spring Boot 配置全局定义 Swagger 3.0 (OpenApi) 类型架构

[英]Define Swagger 3.0 (OpenApi) Type Schema globally via Spring Boot Configuration

最近与我的团队开始了一个新的基于 Spring 的项目,我们决定放弃我们众所周知但过时的 Swagger 2.0 文档实践,转而遵循 OpenApi 指令的 Swagger 3.0 标准。

为了不让跳跃过于剧烈,我们试图坚持自动生成文档的基于配置和注释的风格。 然而,这并非没有一些困难。

我们想为一些高度可重用的类型定义一次模式,供整个项目使用。 也就是说,我们使用org.bson.types.ObjectId字段,结合使用类型的十六进制字符串表示的-to-stringstring-to- serializers/ org.bson.types.ObjectId 这对我们的控制器来说很好。

同时,Swagger UI (v. 1.2.9) 坚持将任何ObjectId字段和/或参数表示为其完整的对象形式,即

 "id": {
    "timestamp": 0,
    "counter": 0,
    "time": 0,
    "date": "2020-02-11T11:13:57.130Z",
    "machineIdentifier": 0,
    "processIdentifier": 0,
    "timeSecond": 0
  }

我们的java 代码有没有办法为ObjectId类型定义模式——这是一个外部依赖——一劳永逸,以便我们的 Swagger UI 识别这种类型可以在任何遇到的实例中表示为一个简单的字符串?

我遇到了同样的问题,我使用静态块作为我的构造函数解决了它:

static {
  SpringDocUtils.getConfig().replaceWithSchema(ObjectId.class, new StringSchema());
}

而且,可以肯定的是,我将 Spring Doc OpenAPI 与基于 Java 的配置一起使用。 您可以简单地根据需要进行调整。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM