Спецификация Swagger / OpenAPI для массивов объектов в параметре запроса URL

Предположим, у меня есть URL-адрес, который имеет путь: ?filter[id]=1&filter[name]=bob&order[][name]=asc&order[][age]=desc

Как можно было бы преобразовать это в чванливую документацию, в частности, массив объектов и массивов в качестве параметра запроса.


person Bill    schedule 01.09.2017    source источник
comment
filter и order[] являются объектами в терминах OpenAPI. Где массив?   -  person Helen    schedule 01.09.2017
comment
Существуют инструменты для создания документации по API почти для любого языка. Используйте один из них, чтобы не беспокоиться о чванстве, просто закодируйте свой api.   -  person Helder Sepulveda    schedule 02.09.2017
comment
@HelderSepu: Возможно, OP использует подход, ориентированный на дизайн, то есть генерирует код из спецификации, а не наоборот.   -  person Helen    schedule 04.09.2017


Ответы (1)


Ваш пример - это не массив объектов, а два отдельных параметра объекта - filter и order[], каждый из которых сериализован с использованием _ 3_ стиль (поддерживается в OpenAPI 3.0). Вы можете описать эти параметры следующим образом:

openapi: 3.0.2
...

paths:
  /something:
    get:
      # ?filter[id]=1&filter[name]=bob&order[][name]=asc&order[][age]=desc
      parameters:
        - in: query
          name: filter
          schema:
            type: object
            properties:
              id:
                type: integer
                example: 1
              name:
                type: string
                example: bob
          style: deepObject

        - in: query
          name: order[]
          schema:
            type: object
            properties:
              name:
                type: string
                example: asc
              age:
                type: string
                example: desc
          style: deepObject
person Helen    schedule 02.10.2019