gpt4 book ai didi

java - Swagger/Openapi-注释 : How to produce allOf with $ref?

转载 作者:行者123 更新时间:2023-11-30 05:49:42 25 4
gpt4 key购买 nike

我正在生成 Rest 端点,包括向生成的代码添加 Openapi/Swagger 注释。

虽然它在基本类型上工作得很好,但我在自定义类上遇到了一些问题。

现在我有很多自定义类的重复模式条目(使用 @Schema(implementation = MyClass.class)) 但至少需要的信息在那里。不过,我想找到一种方法来删除重复的架构条目,同时保留附加信息

在讨论 $ref 和缺少兄弟属性 的 github 问题上,我发现了 an example您将如何在 yaml 中手动编写它以获得我正在寻找的结果,但是我无法弄清楚如何设置注释来生成它。

如果我遵循 example,这就是我认为注释的样子(为了安全起见,它被添加到 getter 和 setter 中):

  import io.swagger.v3.oas.annotations.media.Schema;

...
public class SepaPaymentRequest {
...

@Schema(name = "w307BetrBeg", description = "BETRAG BEGUENSTIGTER ", allOf = { com.diesoftware.services.utils.Betrag.class }, required = true)
public void setW307BetrBeg(final Betrag w307BetrBeg) {
this.w307BetrBeg = w307BetrBeg;
}

...
}

然而,当我获取 openapi.yaml(片段)时我得到的是什么:

    w307BetrBeg:
$ref: '#/components/schemas/Betrag'

我想要的东西:

    w307BetrBeg:
title: 'Betrag'
description: 'BETRAG BEGUENSTIGTER'
allOf:
- $ref: '#/components/schemas/Betrag'

任何提示都非常受欢迎。

最佳答案

我还没有找到使用注释的方法,即通过注释类。


我认为这是可能的,方法是:

  • 创建模型
  • 使用 ModelConverter 注入(inject)模型

当我说“模型”时,我指的是 io.swagger.v3.oas.models.media.Schema 的实例。

特别是我认为您希望创建并注入(inject)一个 io.swagger.v3.oas.models.media.ComposedSchema 实例,它支持 allOf

这样做(即创建模型实例)与手写 YAML 没有太大区别。


另一种可能性——我还没有尝试过——可能是编写一个稍微不同的 ModelConverter,您将其安装到转换器链中。然后,拦截对 resolve 的调用,它返回一个 nameBetrag 的 SchemaObject,并且(有时?)将其替换为 ComposedSchema 使用 allOf 的实例。

关于java - Swagger/Openapi-注释 : How to produce allOf with $ref?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57459520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com