0

我是 Azure 或云世界的新手。我正在尝试使用 APIM 和 Logic App 建立一个宠物项目。我想通过 APIM 提交文件并使用 Logic App 处理文件内容。我在下面为 APIM 创建了 swagger 文件。为了处理这个文件,我的逻辑应用程序中的 HTTP 触发器“请求 JSON 架构”应该是什么样子。该文件将是文本/纯文本。任何帮助都会很棒。这是招摇定义的一部分。

"paths": {
  "/submitEmployeeForm": {
    "post": {
      "description": "This Operation is used to submit employee files.",
      "operationId": "submitEmployee",
      "summary": "submitEmployeeDetails",
      "responses": {
        "200": {
          "description": "Accepted",
          "schema": {
            "$ref": "#/definitions/employeeResponse"
          }
        },
        "400": {
          "description": "400 Bad request",
          "schema": {
            "$ref": "#/definitions/empReqError"
          }
        },
        "401": {
          "description":  "Authorization Required"
        },
        "403": {
          "description": "Forbidden"
        },
        "404": {
          "description": "Not Found"
      },
      "500": {
        "description": "Internal Server Error"
       }          
    },
    "consumes": [
      "multipart/form-data"
    ],
    "produces": [
      "application/json"
    ],
    "parameters": [
      {
        "name": "transactionId",
        "in": "header",
        "description": "Unique id to track requests.",
        "type": "string",
        "format": "uuid",
        "required": true
      },
      {
        "in": "formData",
        "name": "employeefile",
        "description": "upload employee file for processing",
        "required": true,
        "type": "file"
      }
    ]
  }
}
4

1 回答 1

0
  1. 我的逻辑应用程序中的 HTTP 触发器“请求正文 JSON 架构”应该如何处理此文件?该文件将是文本/纯文本。

首先,在不指定任何架构的情况下触发逻辑应用,并在逻辑应用运行历史记录中检查逻辑应用触发器的输出。

如果您发送单个文件,它将类似于以下内容:

{
  "$content-type": "multipart/form-data; boundary=--------------------------708151345350107134405173",
  "$content": "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTcwODE1MTM0NTM1MDEwNzEzNDQwNTE3Mw0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSIiOyBmaWxlbmFtZT0idGVzdC50eHQiDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KVGVzdA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTcwODE1MTM0NTM1MDEwNzEzNDQwNTE3My0tDQo=",
  "$multipart": [
    {
      "headers": {
        "Content-Disposition": "form-data; name=\"\"; filename=\"test.txt\"",
        "Content-Type": "text/plain"
      },
      "body": "Test"
    }
  ]
}

将其复制到剪贴板。

在逻辑应用设计器中,单击Use sample payload to generate schema触发器中的链接并粘贴复制的 JSON。单击Done。它将自动生成架构:

{
    "type": "object",
    "properties": {
        "$content-type": {
            "type": "string"
        },
        "$content": {
            "type": "string"
        },
        "$multipart": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "headers": {
                        "type": "object",
                        "properties": {
                            "Content-Disposition": {
                                "type": "string"
                            },
                            "Content-Type": {
                                "type": "string"
                            }
                        }
                    },
                    "body": {
                        "type": "string"
                    }
                },
                "required": [
                    "headers",
                    "body"
                ]
            }
        }
    }
}
  1. 您真正的问题可能是“如何处理我的逻辑应用程序中的文件内容?”

为此,您可以在逻辑应用操作中使用以下Expression(不是): . 作为一个数组,首先获取它的第一个元素 ( ),然后获取元素的内容(文件内容)。严格来说,您甚至不需要指定请求正文 JSON Schema 即可。仅当您需要使用.Dynamic contenttriggerBody()?['$multipart']?[0]?['body']$multipart[0]bodyDynamic content

于 2021-10-05T11:00:12.840 回答