【问题标题】:OpenAPI annotation for non-attribute (inline) text value非属性(内联)文本值的 OpenAPI 注释
【发布时间】:2021-01-20 20:33:25
【问题描述】:

假设我想对此建模:

<?xml version="1.0" encoding="UTF-8"?>
<something>
    <entry value="foo">some text</entry>
    <entry value="bar">some other text</entry>
</something>

采用这种建模方式:

@XmlRootElement(name = "something")
public class Something {

  @Schema(name = "entry")
  @JacksonXmlProperty(localName = "entry")
  @JacksonXmlElementWrapper(useWrapping = false)
  List<Entry> entries = new ArrayList<>();
}


public class Entry {

  @XmlAttribute
  String value;

  @JacksonXmlText
  String inlineTxt;
}

我对 @JacksonXmlText 的使用显然不够,因为这是 Swagger 在我按下 Try it out 时为我生成的:

<?xml version="1.0" encoding="UTF-8"?>
<something>
    <entry value="string">
        <inlineTxt>string</inlineTxt>
    </entry>
</something>

但是,当我收到以我想要建模的方式形成的对象时,Jackson 可以正常工作。 (getter 和 what-not 由 Lombok 生成,为简洁起见,此处未显示其他注释。)

如何让 OpenAPI 生成一个没有&lt;inlineTxt&gt; 标签的示例对象?

【问题讨论】:

    标签: java xml jackson swagger openapi


    【解决方案1】:

    OpenAPI 规范 does not support 具有属性和文本的 XML 元素,例如

    <entry value="foo">some text</entry>
    

    这意味着您的 XML 结构无法使用 OpenAPI 和相关的 Java 注释来表示。

    【讨论】:

    • 考虑到无法更改输入数据,如何适应?
    • 既然您似乎对 OpenAPI 非常了解(查看您的历史),您是否介意也检查一下这个问题? stackoverflow.com/a/65817960/9768291
    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 2014-03-18
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2012-03-18
    相关资源
    最近更新 更多