Проблема, описывающая объект для XML в Swagger 2.0 от C# - PullRequest
1 голос
/ 15 января 2020

В настоящее время я работаю над документированием API, в котором происходит какая-то прикольная xml сериализация "Tricks" Это сторонний API, который я хочу обернуть, а также предоставить нашим клиентам файл swagger, который показывает и XML, и JSON (тогда оболочка всегда будет отправлять XML стороннему API).

Первая проблема заключается в следующем классе:

public class DistanceValue
{
    /// <remarks />
    [XmlAttribute]
    public DistanceUOMType UOM { get; set; }

    /// <remarks />
    [XmlText]
    public decimal Value { get; set; }
}

Это представляется как <Distance UOM="Mi">305.0</Distance> в XMl.

Поскольку я хочу сохранить изменения входного объекта в Оболочка минимальная (в основном, поэтому мне не нужно, чтобы наши существующие клиенты обновляли свой код, чтобы использовать новый сервис) Я застрял, пытаясь описать сторону xml чванства.

У меня сейчас есть это :

DistanceValue:
  type: object
  properties:
    uom:
      format: string
      xml:
        attribute: true
      enum:
        - MI
        - KM
      type: string
    value:
      format: double
      type: number

Который приближается, когда выходит следующее (атрибут)

<distance uom="MI">
  <value>0</value>
</distance>

Проблема в том, что я не вижу в openapi 2.0 spe c (опять третий партийные ограничения) как получить нулевое значение как xml текст

1 Ответ

1 голос
/ 15 января 2020

Спецификация OpenAPI не имеет способ определять атрибуты для XML элементов с текстовым содержимым, таких как

<Distance UOM="Mi">305.0</Distance>

Вы можете определять атрибуты только для XML элементов, которые имеют дочерние элементы, то есть:

<distance uom="MI">
  <value>0</value>
</distance>

Вот соответствующий запрос расширения в репозитории спецификаций OpenAPI:
https://github.com/OAI/OpenAPI-Specification/issues/630

...