我有一个Azure API管理API,在调用该API时应执行一些逻辑,并根据该逻辑执行2个新API或3个新API,并从逻辑应用返回结果。我假设逻辑应用程序应该能够做到这一点。我需要一种方法,或者至少需要一些建议,我应该如何进行
我不确定在调用API时如何触发Logic应用,它应该连接到Logic App
答案 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调用链中的任何时候发生超时或失败,都会造成难以验证程序正确性的情况。