【问题标题】:Define Swagger 3.0 (OpenApi) Type Schema globally via Spring Boot Configuration通过 Spring Boot Configuration 全局定义 Swagger 3.0 (OpenApi) Type Schema
【发布时间】:2020-02-11 11:22:49
【问题描述】:

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

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

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

同时,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 识别这种类型可以表示为任何遇到实例的简单字符串?

【问题讨论】:

    标签: java spring swagger swagger-ui openapi


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-19
      • 1970-01-01
      • 2021-06-03
      • 2020-02-26
      • 2020-12-18
      • 2021-10-18
      • 2019-07-23
      • 2021-12-21
      • 1970-01-01
      相关资源
      最近更新 更多