在 Flows 中直接访问网络 API

Direct accessing network APIs in Flows

我知道这是一个老问题,但直到现在我还没有得出一个简洁的结论。

我已经提过这样的问题了:

https://discourse.corda.net/t/direct-accessing-network-apis-in-flows/915.

所以,此时,如果我想在流中发出 HTTP 请求,我可以直接发出吗?或者它在某种程度上受到限制?

例如,如果不是,与遗留系统交互的更好方法是什么?

可以从流中进行 HTTP 调用。但是,请注意,从 Corda 3.1 开始,流中对 HTTP 请求的支持是有限的:

  • 请求必须以阻塞方式执行。流程目前不支持暂停以等待 HTTP 调用的响应。这意味着流工作者被阻塞,直到 HTTP 调用 returns
  • 请求必须是幂等的。如果流程失败并且必须从检查点重新启动,将重播 HTTP 请求

您可以在 Flow HTTP 示例 here 中查看在流中发出 HTTP 请求的示例 here

另一种方法是在流外查询遗留系统,并将查询结果作为流参数传入。