Как обрабатывать x-ms-dynamic-schema с результатом в виде массива?

Я создаю настраиваемый соединитель в Microsoft Flow / Logic Apps на основе файла Swagger с расширениями Microsoft (x-ms-dynamic-schema и x-ms-dynamic-values).

Теперь я хочу ПОЛУЧИТЬ массив объектов. Каждый из этих объектов имеет одинаковую схему JSON. Используя расширение x-ms-dynamic-schema, можно указать, что разработчику Logic Apps / Flow необходимо получить схему JSON ответа, чтобы вы могли предоставить свойства своего объекта.

Я хочу добиться:

  • У меня есть действие на моем соединителе ("ListEntities"), которое получает массив объектов, которые меня интересуют, определенной сущности (= тип объекта).
  • Это же действие выбирает схему для этого типа сущности и отображает свойства ответа.

Что я пробовал до сих пор:

Операция получения схемы:

    "/api/entitydefinitions/{type}": {
        "get": {
            "summary": "Get Entity Definition Schema",
            "description": "Gets the schema of an entity definition.",
            "operationId": "GetEntitySchemaByDefinition",
            "produces": [
                "application/json"
            ],
            "parameters": [
                {
                    "name": "type",
                    "type": "string",
                    "in": "path",
                    "description": "Select Entity you want to query",
                    "required": true,
                    "x-ms-summary": "Select Entity"
                }
            ],
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "type": "object"
                    }
                }
            }
        }
    }

Операция получения списка сущностей:

        "/api/entitydefinitions/{type-dynamic}/entities": {
        "get": {
            "summary": "List entities",
            "description": "Gets entities",
            "operationId": "ListEntitiesByDefinition",
            "parameters": [
                {
                    "name": "type-dynamic",
                    "type": "string",
                    "in": "path",
                    "description": "Select entity definition",
                    "required": true,
                    "x-ms-summary": "Entity Definition",
                    "x-ms-dynamic-values": {
                        "operationId": "ListEntityDefinitions",
                        "value-path": "name",
                        "value-title": "name",
                    }
                }
            ],
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "$ref": "#/definitions/ListEntitiesByDefinitionResponse"
                    }
                }
            }
        }
    }

Определение ответа на вышеизложенное

    "ListEntitiesByDefinitionResponse": {
        "type": "object",
        "x-ms-dynamic-schema": {
            "operationId": "GetEntitySchemaByDefinition",
            "parameters": {
                "type": {
                    "parameter": "type-dynamic"
                }
            },
            "value-path": "items"
        }
    },

А теперь пример моего вывода:

[
{
    "id": 4541,
    "identifier": "123456789",
    "Name": "Name 1",
    "Description": "",
},
{
    "id": 4542,
    "identifier": "987654321",
    "Name": "FromPostman",
    "Description": "",
}
]

И моя схема:

{
    "type": "array",
    "items": {
        "title": "Example",
        "type": "object",
        "properties": {
            "id": {
                "type": "integer",
                "x-ms-summary": "id"
            },
            "identifier": {
                "type": "string",
                "x-ms-summary": "identifier"
            },
            "Name": {
                "type": "string",
                "x-ms-summary": "Name"
            },
            "Description": {
                "type": "string",
                "x-ms-summary": "Description"
            }
        },
        "required": []
    }
}

Проблема в том, что мое приложение Flow действительно показывает мне свойства в режиме разработки:

введите изображение  описание здесь

НО, я ожидал, что будет вставлен цикл (применимый к каждому)

Сам поток также не работает, просто потому, что он не зацикливает объекты в массиве.

введите описание изображения здесь

Уже потратил на это слишком много времени и искал вашей помощи.


person Pieter Vandenheede    schedule 12.10.2017    source источник
comment
Некоторые следят за этим: файл Swagger в расширениях OpenAPI для настраиваемых коннекторов в Microsoft Flow находится на flow.microsoft.com/en-us/documentation/customapi-how-to-swagger/ имеет ту же проблему.   -  person Pieter Vandenheede    schedule 13.10.2017
comment
Конец 2018 года ... схема на основе динамического массива все еще не поддерживается powerusers.microsoft.com/t5/I-Found-A-Bug/   -  person ymz    schedule 20.01.2019


Ответы (1)


Что ж ... вы можете пойти против дизайна Azure Flow ... или вы можете решить работать с ним.

Попробуем заменить этот вывод:

[
    {
        "id": 4541,
        "identifier": "123456789",
        "Name": "Name 1",
        "Description": "",
    },
    {
        "id": 4542,
        "identifier": "987654321",
        "Name": "FromPostman",
        "Description": "",
    }
]

С этим:

{
     "values":
     [
        {
            "id": 4541,
            "identifier": "123456789",
            "Name": "Name 1",
            "Description": "",
        },
        {
            "id": 4542,
            "identifier": "987654321",
            "Name": "FromPostman",
            "Description": "",
        }
    ]
}

Я знаю .. это "тот же" выход, но с другим подходом. Таким образом, вы можете использовать поле values в новом действии apply to each и управлять им оттуда.

НО, я ожидал, что будет вставлен цикл (применимый к каждому)

Как вы говорите - если вы хотите использовать это действие - сначала настройте выходной формат в соответствии с требованиями Azure Flow и продолжайте с этого момента.

Короче говоря - попробуйте изменить определение схемы на:

{
    "type": "object",
    "properties":
    {
         "values":
         {
             "type": "array"
             "items": "..."
         }
    }
}
person ymz    schedule 16.01.2019