Параметр строки запроса OpenAPI со списком объектов - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь задокументировать с OpenAPI строку запроса, которая выглядит как

filtered[0][id]=code&filtered[0][value]=12345

и содержит список объектов со свойствами id и value.

Моя yaml документация выглядит следующим образом

parameters:
    - name: filtered
      in: query
      description: filters to be applied
      explode: true
      style: deepObject
      schema:
        type: array
        items:
          properties:
            id:
              description: name of the field to be filtered
              type: string
            value:
              description: value of the filter
          type: object

Проблема заключается в следующем: похоже, опция style: deepObject работает только для одного уровня, а не на втором уровне, где мои объектына самом делеТо есть он ожидает строку запроса типа

?sorted[0]=%7B%0A%20%20%22id%22%3A%20%22string%22%2C%0A%20%20%22value%22%3A%20true%0A%7D

с объектом, не сериализованным в виде массива с ключами id и value.

Есть ли способ решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Как следует из названия, :), стиль deepObject только «предоставляет простой способ рендеринга вложенных объектов », а не массивов.По крайней мере, в соответствии с версией 3.0.1 она применяется только к объектам.

Обратите внимание, что даже вложенные объекты могут еще не поддерживаться инструментами, поскольку спецификация "не предоставляет такие примеры".

Таким образом, ваш формат не совместим с Open API, но, возможно, вы можете определить свой запрос как параметры, которые следуют регулярному выражению.В таких случаях, как правило, я делаю все возможное, но предоставляю некоторые подробные объяснения (которые, конечно, программисты обычно пропускают)

https://swagger.io/specification/

0 голосов
/ 19 октября 2018

Спецификация OpenAPI 3.0 в настоящее время определяет поведение deepObject только для простых объектов (с примитивными свойствами), таких как

{
  "id": 5,
  "name": "Bob"
}

, но не для массивов и не для вложенных объектов .

Поскольку поведение для массивов и вложенных объектов не определено, описать строку запроса на самом деле невозможно.Технически единственным способом было бы определить filtered[0][id], filtered[0][value] и т. Д. В качестве отдельных параметров запроса.

...