是否可以在APIM请求中进行内部短轮询,然后用同步响应进行响应?
流程如下:
1。APIM收到一个请求
2。APIM触发持久的功能编排
3.APIM等待并轮询持久函数响应(通过策略?(
4。APIM以实际结果进行响应
对于API消费者来说,这将是一个单一的请求。
这是常见的模式吗?还是只向API消费者提供202响应轮询URL更好?我预计请求只需要几秒钟到不到一分钟的时间。
有没有一种我还没有考虑过的更标准的方法?
您希望如何向消费者展示API是主观的。
- 如果您希望前端用户轮询API,那么在位置头中使用轮询url的202接受响应就是方法
- 如果您想将API伪装为同步API,则必须在APIM策略中实现轮询模式本身。请参阅以下帖子
使用API-M屏蔽异步API当将实现移动到逻辑应用程序时,即使它与逻辑应用程序有关,也可以为任何异步API 实现相同的模式
链接摘录:
<outbound>
<base />
<retry condition="@(((IResponse)context.Variables["var"]).StatusCode == 202)" count="10" interval="30">
<send-request mode="new" response-variable-name="var" ignore-error="false">
<set-url>@(context.Response.Headers["location"][0])</set-url>
<set-method>GET</set-method>
</send-request>
</retry>
<return-response response-variable-name="var" />
</outbound>
正如我之前指出的,这实际上取决于您希望如何向消费者展示您的API。这两种模式都有效。