调用API管理API时为逻辑应用创建触发器的方法

时间:2019-05-23 15:17:22

标签: azure azure-logic-apps azure-api-management

我有一个Azure API管理API,在调用该API时应执行一些逻辑,并根据该逻辑执行2个新API或3个新API,并从逻辑应用返回结果。我假设逻辑应用程序应该能够做到这一点。我需要一种方法,或者至少需要一些建议,我应该如何进行

我不确定在调用API时如何触发Logic应用,它应该连接到Logic App

1 个答案:

答案 0 :(得分:1)

要将Logic Apps与Azure API管理(APIM)集成,请创建一个HTTP endpoint in Logic Apps。接下来,generate a SAS token for the Logic App。这将用于保护端点。阅读有关进一步限制IP的文档。

要触发Logic App,请在APIM中设置API定义的后端URL,或者如果组成多个后端调用,请使用如下所示的自定义XML策略:

<send-request mode="new" response-variable-name="[resultVariableName]" timeout="20" ignore-error="true">
  <set-url>https://prod-23.centralus.logic.azure.com:443/workflows/0c9def69700c4b2995e2e587123306f7/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=ORQeXlFZxBeF7xmF9pO73sgYl_-w0v6V9uugi8bhHeA</set-url>
  <set-method>POST</set-method>
  <set-header name="Content-Type" exists-action="override">
    <value>application/json</value>
  </set-header>
  <set-body>@($"token={(string)context.Variables["someVariable"]}")</set-body>
</send-request>

虽然我提供了答案,但实际上我不会推荐此解决方案。这是可靠性的反模式。如果在HTTP调用链中的任何时候发生超时或失败,都会造成难以验证程序正确性的情况。