我知道这是一个老问题,但直到现在我还没有得出一个简洁的结论。
我以前已经提出过这样的问题:
https://discourse.corda.net/t/direct-accessing-network-apis-in-flows/915.
所以,现在,如果我想在流中发出HTTP请求,我可以直接发出吗?或者它在某种程度上受到了限制?
如果不是,如何更好地与遗留系统交互?
从流中进行HTTP调用是可以的。但是,请注意,从Corda 3.1开始,对流中HTTP请求的支持是有限的:
- 请求必须以阻塞的方式执行。流当前不支持挂起以等待HTTP调用的响应。这意味着在HTTP调用返回之前,流工作程序将被阻止
- 请求必须是幂等的。如果流失败并且必须从检查点重新启动,则HTTP请求将被重播
您可以在这里的flow HTTP示例中看到在流中发出HTTP请求的示例。
另一种选择是在流之外查询遗留系统,并将查询结果作为流参数传入。